프로그래머스 날짜 비교하기

KIMYEONGJUN·2026년 8월 9일
post-thumbnail

문제

내가 생각했을때 문제에서 원하는부분

정수 배열 date1과 date2가 주어집니다.
두 배열은 각각 날짜를 나타내며 [year, month, day] 꼴로 주어집니다. 각 배열에서 year는 연도를, month는 월을, day는 날짜를 나타냅니다.
만약 date1이 date2보다 앞서는 날짜라면 1을, 아니면 0을 return 하는 solution 함수를 완성해 주세요.

내가 이 문제를 보고 생각해본 부분

solution 메서드는 두 정수 배열 date1과 date2를 입력으로 받는다. 각각 연도, 월, 일을 나타내는 3개의 요소를 가진 배열이다.
date1[0]과 date2[0]을 비교하여 연도가 작은 경우에는 date1이 더 앞서는 날짜이므로 1을 반환한다.
만약 연도가 같다면, date1[1]과 date2[1]을 비교하여 월이 작은 경우 1을 반환한다.
연도와 월이 모두 같을 경우, date1[2]와 date2[2]을 비교하여 일이 작은 경우 1을 반환한다.
이 모든 조건에 해당하지 않으면 date1이 date2보다 앞서지 않는 것이므로 0을 반환한다.
main 메서드 안에서 두 쌍의 날짜 배열이 선언되어 있다.
각각 solution 메서드에 전달되어 비교 결과를 반환받는다.
System.out.println으로 결과를 출력하여, 첫 번째 날짜가 앞서면 1, 같거나 뒤면 0이 출력된다.

코드로 구현

class Solution {
    public int solution(int[] date1, int[] date2) {
        if (date1[0] < date2[0]) { 
            return 1;
        } else if (date1[0] == date2[0]) {
            if (date1[1] < date2[1]) { 
                return 1;
            } else if (date1[1] == date2[1]) {
                if (date1[2] < date2[2]) { 
                    return 1;
                }
            }
        }
        return 0;
    }
}

프로그래머스 코드

package programmers.programmers2;

// 프로그래머스 날짜 비교하기
public class Main107 {
    public static int solution(int[] date1, int[] date2) {
        if (date1[0] < date2[0]) {
            return 1;
        } else if (date1[0] == date2[0]) {
            if (date1[1] < date2[1]) {
                return 1;
            } else if (date1[1] == date2[1]) {
                if (date1[2] < date2[2]) {
                    return 1;
                }
            }
        }
        return 0;
    }

    public static void main(String[] args) {
        int[] date1 = {2021, 12, 28};
        int[] date2 = {2021, 12, 29};
        int[] date3 = {1024, 10, 24};
        int[] date4 = {1024, 10, 24};

        int result = solution(date1, date2);
        int result2 = solution(date3, date4);
        System.out.println(result); // 기대 출력: 결과: 1
        System.out.println(result2); // 기대 출력: 결과: 0
    }
}

위에 있는 코드를 변경한 코드

마무리

코드와 설명이 부족할수 있습니다. 코드를 보시고 문제가 있거나 코드 개선이 필요한 부분이 있다면 댓글로 말해주시면 감사한 마음으로 참고해 코드를 수정 하겠습니다.

profile
Junior backend developer

0개의 댓글