둠스데이 알고리즘 알아보기

오늘은 둠스데이 알고리즘에 대하여 이론만 간략히 알아보았습니다.

둠스데이 알고리즘

정의

존 호턴 콘웨이가 발명한 알고리즘으로, 임의의 날짜에 해당하는 요일을 쉽게 구하는 데에 쓰인다고 합니다.

한 해에서 다음 날짜는 언제나 요일이 같다는 특성을 이용한 알고리즘입니다.

윤년

우선 이 알고리즘에는 윤년이 사용되므로 잠깐 짚어보자면, 윤년은 실제 태양년에 맞추기 위해 여분의 하루를 끼우는 해입니다.

태양년은 정수의 하루로 나누어떨어지지 않고, 달의 공전주기와 지구의 공전주기는 다르기 때문에, 태양력에서는 하루(윤일)정도를 적절한 시기에 끼워서 이를 보정한다고 합니다.

원리

어떤 날과 다른 날의 요일이 같으려고 한다면, 일주일의 간격이 7일이므로 두 날짜의 차이가 7의 배수면 요일이 같습니다.

하지만, 일일히 7의 배수인지 구하는 것은 날짜가 커지면 매우 귀찮아지므로, 둠스데이 알고리즘을 사용하는 것입니다.

예시

예를 들어, 짝수 월은 2월의 마지막 날과 4월 4일, 6월 6일, 8월 8일, 10월 10일, 12월 12일으로 모두 요일이 같고, 2018년 기준으로 모두 수요일임을 확인 할 수 있습니다.

또한 홀수 월은 5월 9일, 9월 5일, 7월 11일, 11월 7일으로 모두 요일이 같고, 이 역시 2018년 기준으로 모두 수요일임을 확인 할 수 있습니다.

마지막으로 1월 3일과 2월의 마지막 날도 마찬가지로 수요일로 모두 같습니다.

왜 모두 수요일인가

2018년의 둠스데이 요일은 수요일이기 때문입니다.

크리스마스의 요일을 구해보자

  1. 2018년의 둠스데이는 수요일임을 알아둡니다.
  2. 짝수 월인 12월은 12일이 둠스데이입니다.
  3. 2주 후인 12월 26일도 수요일입니다.
  4. 즉, 크리스마스인 25일은 하루전이므로 화요일입니다.

연도마다 다른 둠스데이 요일을 어떻게 구하는가

평년은 365일이며, 윤년은 366일이라면, 2018년의 둠스데이를 알고 있다는 가정하에 다음 년도는 365일 후에 올 수 있으므로 (365%7) 혹은 (366%7)일이 미뤄지게 됩니다.

즉, 윤년은 2일씩 미뤄지며 윤년을 제외한 년도는 1일씩 미뤄지게 되는 것입니다.

Written on March 5, 2018