본문 바로가기
알고리즘/Programmers

[TIL] 2023.08.11 Programmers_날짜 비교하기

by heereal 2023. 8. 11.

날짜 비교하기

문제 설명

정수 배열 date1과 date2가 주어집니다. 두 배열은 각각 날짜를 나타내며 [year, month, day] 꼴로 주어집니다. 각 배열에서 year는 연도를, month는 월을, day는 날짜를 나타냅니다.

만약 date1이 date2보다 앞서는 날짜라면 1을, 아니면 0을 return 하는 solution 함수를 완성해 주세요.

 

 

입출력 예

date1  date2  result
[2021, 12, 28] [2021, 12, 29] 1
[1024, 10, 24] [1024, 10, 24] 0

입출력 예 #1

  • date1이 date2보다 하루 앞서기 때문에 1을 return 합니다.

입출력 예 #2

  • date1과 date2는 날짜가 서로 같으므로 date1이 더 앞서는 날짜가 아닙니다. 따라서 0을 return 합니다.

 

나의 풀이

function solution(date1, date2) {
    for (const i in date1) {
        if (date1[i] > date2[i]) return 0;
        if (date1[i] < date2[i]) return 1;
    }
    return 0;
}

for문에서 date1의 날짜가 앞서거나 date2의 날짜가 앞서는 경우를 걸러주고, 만약 날짜가 동일한 경우에는 for문을 통과한 후 함수에서 0을 return하게 된다.

 

 

다른 사람의 풀이 01

const solution = (date1, date2) => new Date(date1) < new Date(date2) ? 1 : 0

date1과 date2는 배열 형태인데도 `new Date()`를 사용하면 Date 객체가 생성된다. Date 객체는 대소 비교가 가능하기 때문에 이 점을 이용한 풀이였다.

 

function solution(date1, date2) {
    let date = new Date(date1);
    console.log(date) // 2021-12-27T15:00:00.000Z
}

 

 

다른 사람의 풀이 02

function solution(date1, date2) {
    return date1.join('') - date2.join('') < 0 ? 1 : 0;
}

join해서 숫자의 크기 자체를 비교한다! 너무 재미있는 풀이였다👍

 


Date() 생성자

const date1 = new Date('December 17, 1995 03:24:00');
// Sun Dec 17 1995 03:24:00 GMT...

const date2 = new Date('1995-12-17T03:24:00');
// Sun Dec 17 1995 03:24:00 GMT...

console.log(date1 === date2);
// Expected output: false

console.log(date1 - date2);
// Expected output: 0

Date 생성자는 시간의 특정 지점을 나타내는 Date 객체를 플랫폼에 종속되지 않는 형태로 생성합니다. Date 객체는 1970년 1월 1일 UTC(국제표준시) 자정으로부터 지난 시간을 밀리초로 나타내는 UNIX 타임스탬프를 담습니다.

댓글