본문으로 바로가기

날짜 비교하기

category 코딩테스트_문제풀이/프로그래머스 2025. 6. 3. 13:11

🦛 문제 설명

정수 배열 date1과 date2가 주어집니다. 두 배열은 각각 날짜를 나타내며 [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

 

🦛 입출력 예 설명

입출력 예 #1

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

입출력 예 #2

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

 

🦛 풀이

✅ 접근 방식 요약

1. 날짜 비교는 연 → 월 → 일 순서

  • 날짜는 왼쪽에서부터 큰 단위니까,
    먼저 연도(year)를 비교 → 같으면 월(month) → 그것도 같으면 일(day)을 비교하면 돼.
  • 즉, 사전식 비교 (lexicographical order)처럼 단계적으로 비교해.

2. 비교 순서

  • date1[0] < date2[0] → date1이 먼저
  • 같다면 date1[1] < date2[1] 확인
  • 그것도 같다면 date1[2] < date2[2] 확인
  • 위 조건 중 하나라도 성립하면 1을 리턴
  • 아니면 0
class Solution {
    public int solution(int[] date1, int[] date2) {
        int answer = 0;
        if (date1[0] < date2[0]) {
            answer = 1;
        } else if (date1[0] == date2[0]) {
            if (date1[1] < date2[1]) {
                answer = 1;
            } else if (date1[1] == date2[1]) {
                if (date1[2] < date2[2]) {
                    answer = 1;
                }
            }
        }
        return answer;
    }
}

'코딩테스트_문제풀이 > 프로그래머스' 카테고리의 다른 글

피자 나눠 먹기 (2)  (0) 2025.06.03
5명씩  (1) 2025.06.03
ad 제거하기  (0) 2025.06.02
모스부호 (1)  (0) 2025.01.29
간단한 논리 연산  (0) 2024.08.01