[파이썬 쉽게 설명하기 6] 윤년(Leap Year)
# Which year do you want to check?
year = int(input())
if year % 4 == 0:
if year % 100 == 0:
if year % 400 == 0:
print("Leap year")
else:
print("Not leap year")
else:
print("Leap year")
else:
print("Not leap year")
현재 전 세계 대부분의 나라에서 쓰는 그레고리력은 4년에 반드시 하루씩 윤날(2월 29일)을 추가하는 율리우스력을 보완한 것으로, 태양년과의 편차를 줄이기 위해 율리우스력의 400년에서 3일(세 번의 윤년)을 뺐다.
그레고리력의 정확한 윤년 규칙은 다음과 같다.
서력 기원 연수가 4로 나누어 떨어지는 해는 윤년으로 한다. (1988년, 1992년, 1996년, 2004년, 2008년, 2012년, 2016년, 2020년, 2024년, 2028년, 2032년, 2036년, 2040년, 2044년 ...)
서력 기원 연수가 4, 100으로 나누어 떨어지는 해는 평년으로 한다. (1700년, 1800년, 1900년, 2100년, 2200년, 2300년...)
서력 기원 연수가 4, 100, 400으로 나누어 떨어지는 해는 윤년으로 둔다. (1600년, 2000년, 2400년...)
즉, 400년에 97년은 윤년이 되며, 1년은 평균 365.2425일이 된다. 이는 춘분점을 기준으로 한 태양년보다 0.0003일(26초)이 길기 때문에, 약 3,300년마다 1일의 편차가 난다.
이 코드는 윤년을 확인하는 프로그램입니다. 윤년은 보통 4년마다 오지만, 특별한 규칙이 있어서 모든 4의 배수가 윤년은 아닙니다. 이 규칙을 코드로 구현한 것입니다.
year = int(input()):
사용자로부터 입력을 받아 year 변수에 저장합니다. input() 함수는 사용자의 입력을 문자열로 받는데, int() 함수를 사용하여 이를 정수로 변환합니다.
if year % 4 == 0:
: 이 줄은 year가 4로 나누어 떨어지는지 확인합니다. %는 나머지 연산자(modulo operator)로, year % 4는 year를 4로 나눈 나머지를 의미합니다. 만약 year가 4의 배수라면, 나머지가 0이 됩니다.
if year % 100 == 0:
: 이 줄은 year가 100으로 나누어 떨어지는지 확인합니다. 윤년 규칙에 따르면, 100의 배수인 해는 특별한 경우로 취급되어야 합니다.
if year % 400 == 0:
: 이 줄은 year가 400으로 나누어 떨어지는지를 확인합니다. 이는 100의 배수 중에서도 윤년이 되는 경우, 즉 400의 배수인 경우를 확인하기 위함입니다.
print("Leap year")
: 윤년인 경우에 이 메시지를 출력합니다.
else: print("Not leap year")
: 윤년이 아닌 경우에 이 메시지를 출력합니다.
이 코드의 핵심은 윤년의 정의에 있습니다. 일반적으로, 윤년은 4년마다 오지만, 100의 배수인 해는 윤년이 아니며, 400의 배수인 해는 다시 윤년으로 취급됩니다. 이러한 규칙을 코드에 반영한 것입니다.
(첫 번째 확인 - 연도 % 4 == 0): 우리의 영웅은 4년에 한 번씩만 열리는 거대하고 화려한 문 앞에 서 있습니다. 이 문은 마법과 기대감으로 둘러싸여 있으며, 윤년 코드의 첫 번째 조건을 나타냅니다. 연도가 4로 나누어 떨어지면, 이것은 윤년일 수도 있다는 초기 신호입니다. 마치 이 문이 열리면서 영웅에게 앞으로 나아갈 길을 제시하는 것처럼 말이죠.
(두 번째 확인 - 연도 % 100 == 0): 문을 통과한 후, 영웅은 성 안에 있는 복잡한 미로를 발견합니다. 이 미로는 100년마다 진짜 길을 드러내며, 두 번째 조건을 상징합니다. 윤년 규칙에 따르면, 연도가 4로 나누어 떨어져도 100으로도 나누어 떨어지면 윤년이 아닙니다. 이 미로는 윤년을 결정하는 복잡함과 예외를 나타냅니다.
(마지막 확인 - 연도 % 400 == 0): 미로의 중심에는 400년마다 비밀을 열어주는 신비한 방이 있습니다. 이 방은 윤년 계산의 최종 조건을 대표합니다. 윤년 규칙에 따르면, 연도가 100으로 나누어 떨어져도 400으로도 나누어 떨어지면 윤년입니다. 이 특별한 방은 영웅에게 최종적이고 드문 조건을 충족해야 하는 궁극적인 시험을 제공합니다.
(결론 - 윤년 확인): 영웅은 도전을 헤쳐나가며 빛나는 열쇠를 자랑스럽게 들고 있습니다. 이 장면은 윤년을 성공적으로 확인한 것을 상징합니다. 영웅이 열쇠를 들고 있는 것처럼, 연도가 세 가지 조건을 모두 충족하면 그 해는 윤년으로 선언됩니다.