[LeetCode] Number of Days Between Two Dates

아르당·2026년 4월 27일

LeetCode

목록 보기
282/303
post-thumbnail

문제를 이해하고 있다면 바로 풀이를 보면 됨
전체 코드로 바로 넘어가도 됨
마음대로 번역해서 오역이 있을 수 있음

Problem

두 날짜 사이의 일 수를 세는 프로그램을 작성해라.
두 날짜는 문자열로 주어지고, 포멧은 YYYY-MM-DD이다.

Example

#1
Input: date1 = "2019-06-29", date2 = "2019-06-30"
Output: 1

#2
Input: date1 = "2020-01-15", date = "2019-12-31"
Output: 15

Constraints

  • 주어진 날짜는 1971년과 2100년 사이의 유효한 날짜이다.

Solved

class Solution {
    public int daysBetweenDates(String date1, String date2) {
        return Math.abs(getDays(date1) - getDays(date2));
    }

    private int getDays(String date){
        int y = Integer.parseInt(date.substring(0, 4));
        int m = Integer.parseInt(date.substring(5, 7));
        int d = Integer.parseInt(date.substring(8, 10));
        int[] prefix = new int[]{0, 0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};

        for(int i = 2; i <= 13; i++){
            prefix[i] += prefix[i - 1];
        }

        int days = (y - 1972) * 365 + prefix[m] + d;

        for(int i = 1972; i < y; i += 4){
            if(isLeap(i)){
                days++;
            }
        }

        if(isLeap(y) && m > 2){
            days++;
        }

        return days;
    }

    private boolean isLeap(int year){
        return year % 4 == 0 && (year % 100 != 0 || year % 400 == 0);
    }
}
profile
내 마음대로 코드 작성하는 세상

0개의 댓글