Leetcode Java Day of the Year
업데이트:
문제
코드
class Solution {
private static int[] DAYS = new int[] { 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 };
public int dayOfYear(String date) {
int months = Integer.parseInt(date.substring(5, 7));
int result = months > 2 && this.isLeapYears(Integer.parseInt(date.substring(0, 4))) ? 1 : 0;
for (int i = 0; i < months - 1; i++) {
result += DAYS[i];
}
return result + Integer.parseInt(date.substring(8));
}
private boolean isLeapYears(int year) {
return year % 4 == 0 && (year % 400 == 0 || year % 100 != 0);
}
}
결과
설명
-
“YYYY-MM-DD” 날자 포멧으로 date가 주어지면 해당 연도의 몇 번째 일자인지 구하는 문제이다.
-
DAYS는 월별 기준 일수를 저장한 변수로 윤달인 경우를 제외하고 값을 넣어 저장한 변수이다.
- 문제 풀이에 필요한 변수를 정의한다.
- months는 date의 월을 정수로 변환한 변수이다.
- result는 해당 연도의 일자를 저장할 변수로, 아래의 각 경우에 따라 값을 초기화한다.
- months가 2보다 큰 윤달 일자가 포함되면서 date의 연도가 윤달에 해당하면 1로 초기화한다.
- 위의 경우가 아니라면 0으로 초기화한다.
-
0부터 $months - 1$까지 i를 증가시키면서 result에 DAYS[i]의 값을 누계한다.
- 반복이 완료되면 result에 현재 일자를 더해서 주어진 문제의 결과로 반환한다.
소스
Sample Code는 여기에서 확인 가능합니다.
댓글남기기