본문 바로가기
Coding Test/Java Coding Test

[프로그래머스 / 자바] - 날짜 비교하기

by nam_ji 2024. 11. 12.

날짜 비교하기 - LV.0

문제


테스트 (인텔리제이)

import java.time.LocalDate;
import java.util.Arrays;

public class 날짜_비교하기 {
    public static void main(String[] args) {
        /*
        정수 배열 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 합니다.
         */
        int[] date1 = {2022, 1, 1};
        int[] date2 = {2021, 12, 31};

        int answer = solution1(date1, date2);
        System.out.println(answer);

        solution2(date1, date2);
        solution3(date1, date2);
        solution4(date1, date2);
    }

    public static int solution1(int[] date1, int[] date2) {
        if (date2[0] > date1[0]) {
            return 1;
        } else if (date2[0] < date1[0]) {
            return 0;
        } else if (date2[1] > date1[1]) {
            return 1;
        } else if (date2[1] < date1[1]) {
            return 0;
        } else if (date2[2] > date1[2]) {
            return 1;
        }

        return 0;
    }

    public static void solution2(int[] date1, int[] date2) {
        int answer = 0;

        LocalDate dateA = LocalDate.of(date1[0], date1[1], date1[2]);
        LocalDate dateB = LocalDate.of(date2[0], date2[1], date2[2]);

        if (dateA.isBefore(dateB)) {
            answer = 1;
        }

        System.out.println(answer);
    }

    public static void solution3(int[] date1, int[] date2) {
        int answer = 0;

        answer = Arrays.compare(date1, date2) < 0 ? 1 : 0;

        System.out.println(answer);
    }

    public static void solution4(int[] date1, int[] date2) {
        int answer = 0;

        for (int i = 0; i < date1.length; i++) {
            if (date2[i] > date1[i]) {
                answer = 1;
                break;
            } else if (date2[i] < date1[i]) {
                break;
            }
        }

        System.out.println(answer);
    }
}

프로그래머스 코드

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

//         return 0;
//     }
// }

// import java.util.*;
// import java.time.*;

// class Solution {
//     public int solution(int[] date1, int[] date2) {
//         int answer = 0;

//         LocalDate dateA = LocalDate.of(date1[0], date1[1], date1[2]);
//         LocalDate dateB = LocalDate.of(date2[0], date2[1], date2[2]);

//         if (dateA.isBefore(dateB)) {
//             answer = 1;
//         }
        
//         return answer;
//     }
// }

// import java.util.*;
// import java.time.*;

// class Solution {
//     public int solution(int[] date1, int[] date2) {
//         int answer = 0;

//         answer = Arrays.compare(date1, date2) < 0 ? 1 : 0;
        
//         return answer;
//     }
// }

import java.util.*;
import java.time.*;

class Solution {
    public int solution(int[] date1, int[] date2) {
        int answer = 0;

        for (int i = 0; i < date1.length; i++) {
            if (date2[i] > date1[i]) {
                answer = 1;
                break;
            } else if (date2[i] < date1[i]) {
                break;
            }
        }
        
        return answer;
    }
}