윤년(閏年)은 보통 4년마다 한 번씩 찾아옵니다. 다만 단순히 '4로 나누어 떨어지는 해'가 모두 윤년인 것은 아니며, 연도의 종류에 따라 판별 기준이 달라집니다.
윤년 판별 규칙
윤년을 정확하게 판별하려면 다음 두 가지 규칙을 이해해야 합니다.
- 일반 연도: 4로 나누어 떨어지면 윤년입니다.
- 세기 연도(100으로 나누어 떨어지는 해): 400으로 나누어 떨어져야만 윤년입니다.
예를 들어 2012년은 4로 나누어 떨어지므로 윤년이고, 2000년은 세기 연도이지만 400으로 나누어 떨어지므로 윤년입니다. 반면 1900년은 4로 나누어 떨어지지만 세기 연도이면서 400으로 나누어 떨어지지 않기 때문에 평년입니다.
파이썬 예제 코드
다음 파이썬 프로그램은 사용자로부터 연도를 입력받아 해당 연도가 윤년인지 아닌지를 출력합니다.
yr = int(input('연도를 입력하세요: '))
if yr % 100 == 0: # 세기 연도인 경우
if yr % 400 == 0:
print('{}년은 윤년입니다.'.format(yr))
else:
print('{}년은 윤년이 아닙니다.'.format(yr))
else: # 일반 연도인 경우
if yr % 4 == 0:
print('{}년은 윤년입니다.'.format(yr))
else:
print('{}년은 윤년이 아닙니다.'.format(yr))실행 결과
연도를 입력하세요: 2012 2012년은 윤년입니다. 연도를 입력하세요: 2018 2018년은 윤년이 아닙니다. 연도를 입력하세요: 2000 2000년은 윤년입니다. 연도를 입력하세요: 1900 1900년은 윤년이 아닙니다.
코드 동작 원리
- 먼저
input()으로 입력받은 값을int()를 사용해 정수형으로 변환합니다. yr % 100 == 0조건으로 해당 연도가 세기 연도인지 확인합니다.- 세기 연도라면
yr % 400 == 0조건을 추가로 검사하여 윤년 여부를 최종 결정합니다. - 세기 연도가 아니라면
yr % 4 == 0조건만으로 윤년 여부를 판별합니다.
더 간단한 방법: calendar 모듈 활용
파이썬 표준 라이브러리의 calendar 모듈을 사용하면 위와 같은 조건문 없이도 윤년을 손쉽게 확인할 수 있습니다.
import calendar print(calendar.isleap(2012)) # True print(calendar.isleap(1900)) # False
calendar.isleap() 함수는 윤년이면 True, 아니면 False를 반환하므로, 실무에서는 이 방법을 사용하는 것이 코드를 더 간결하고 안전하게 만들어 줍니다.