프로그래머스/Lv. 0(코딩 기초 트레이닝)

[프로그래머스 코딩테스트] 날짜 비교하기(Java)

Sigfriede 2023. 5. 30. 01:10

  문제 설명

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

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

 

  제한사항

  • date1의 길이 = date2의 길이 = 3
    • 0 <= year <= 10,000
    • 1 <= month <= 12
    • day는 month에 따라 가능한 날짜로 주어집니다,

 

  입출력 예

date1 date2 result
[2021, 12, 28] [2021, 12, 29] 1
[1024, 10, 24] [1024, 10, 24] 0
import java.util.Arrays;
class Solution {
    public int solution(int[] date1, int[] date2) {
        int answer = 0;
        if (Arrays.equals(date1, date2)) {
            answer = 0;
        } else {
            if (date1[0] <= date2[0]) {
                if ((date1[1] < date2[1]) 
                    || (date1[1] == date2[1] && date1[2] < date2[2])) {
                        answer = 1;
                }
            }
        }
        return answer;
    }
}

  if문에서 Arrays 클래스의 equals 메소드를 이용하여 date1과 date2를 비교합니다. 만약 같다면 answer에 0을 할당합니다.

  만약 같지 않다면 중첩 if문에서 날짜를 비교합니다. date의 0번째 인덱스는 연도, 1번째 인덱스는 월, 2번째 인덱스는 일입니다. date2의 연도가 더 크고, 동시에 월이 더 크거나 또는 date 간 월이 같을 때 date2의 일이 더 클 때 answer에 1을 할당합니다.

  저는 중첩 if문으로 풀었지만, LocalDate를 이용하여 비교하거나 Arrays 클래스의 compare 메소드를 이용하여 비교하는 법이 있습니다. 메소드를 이용하여 푸는 것이 직관적이고 가독성 측면에서도 더 좋을 것입니다.