문제를 이해하고 있다면 바로 풀이를 보면 됨
전체 코드로 바로 넘어가도 됨
마음대로 번역해서 오역이 있을 수 있음
두 날짜 사이의 일 수를 세는 프로그램을 작성해라.
두 날짜는 문자열로 주어지고, 포멧은 YYYY-MM-DD이다.
#1
Input: date1 = "2019-06-29", date2 = "2019-06-30"
Output: 1
#2
Input: date1 = "2020-01-15", date = "2019-12-31"
Output: 15
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);
}
}