Leetcode Java Day of the Week
업데이트:
문제
코드
class Solution {
private String[] days = new String[] { "Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday" };
public String dayOfTheWeek(int day, int month, int year) {
if (month < 3) {
month += 12;
year -= 1;
}
int century = year / 100;
year %= 100;
return days[((((century / 4) - (2 * century) + year + (year / 4) + ((13 * (month + 1)) / 5) + day - 1) % 7) + 7) % 7];
}
}
결과
설명
-
year년 month월 day일자가 무슨 요일인지 반환하는 문제이다.
- 문제 풀이에 필요한 변수를 정의한다.
- 전역 변수인 days는 요일에 따라 반환할 결과를 저장한 변수이다.
- month가 3 미만인 경우, month에 12를 더하고 yaer에 1을 감소시킨다.
- century는 세기를 저장할 변수로, year을 100으로 나눈 몫을 저장한다.
- year에 세기를 제외한 100을 나눈 나머지를 넣어준다.
- Zeller’s congruence 방식으로 days에서 $\frac{century}{4} - (2 \times century) + year + \frac{year}{4} + \frac{13 \times (month + 1)}{5} + day - 1$의 결과에 7을 나눈 나머지에 7을 더한 후 다시 7을 나눈 나머지 번째 값을 꺼내 주어진 문제의 결과로 반환한다.
소스
Sample Code는 여기에서 확인 가능합니다.
댓글남기기