Doomsday Algorithm
Doomsday Algorithm은 특정 날짜의 요일을 빠르게 계산하는 알고리즘이다.
요일에 다음과 같이 숫자를 대응시킨다.
Sun=0,Mon=1,Tue=2,Wed=3,Thu=4,Fri=5,Sat=6
Doomsday
한 해에는 다음 날짜들이 모두 같은 요일을 가진다.
4/4,6/6,8/8,10/10,12/12
5/9,9/5,7/11,11/7,3/14
1월과 2월은
- 평년: 1/3, 2/28
- 윤년: 1/4, 2/29
을 사용한다.
이 날짜들의 공통 요일을 그 해의 Doomsday라고 한다.
Doomsday 계산
연도의 마지막 두 자리를 y라고 하면
D=(⌊12y⌋+(ymod12)+⌊4ymod12⌋+C)mod7
여기서 C는 세기의 기준값이다.
1800s:5,1900s:3,2000s:2,2100s:0
Example
2026년의 경우 y=26이고, 2000년대이므로 C=2이다.
⌊1226⌋+(26mod12)+⌊426mod12⌋+2
=2+2+0+2=6
따라서 2026년의 Doomsday는
6=Saturday
이다.
예를 들어 9월의 Doomsday는 9/5이므로 2026년 9월 5일은 토요일이다.
9월 17일은 여기서 12일 뒤이고,
12≡5(mod7)
이므로 토요일에서 5일 뒤인 목요일이다.
따라서
2026/9/17=Thursday