윤년(閏年)은 역법을 실제 태양년에 맞추기 위해 여분의 하루 또는 월(月)을 끼우는 해이다. 태양년은 정수의 하루로 나누어 떨어지지 않고,  공전주기 지구의 공전 주기는 다르기 때문에 태양력에서는 하루(윤일), 태음태양력 (https://ko.wikipedia.org/wiki/윤년)

 

윤년 - 위키백과, 우리 모두의 백과사전

위키백과, 우리 모두의 백과사전. 윤년(閏年)은 역법을 실제 태양년에 맞추기 위해 여분의 하루 또는 월(月)을 끼우는 해이다. 태양년은 정수의 하루로 나누어떨어지지 않고, 달의 공전주기와 지구의 공전주기는 다르기 때문에 태양력에서는 하루(윤일), 태음태양력에서는 한 달(윤달)을 적절한 시기에 끼워서 이를 보정한다. 태양력에서는 보통 윤일이 들어 있는 해를 말하는데, 이 경우 1년은 366일이 되며 이것이 바로 윤년이다. 지구가 태양을 한 바퀴 도는 데에는

ko.wikipedia.org

태양력의 윤년

현재 전 세계 대부분의 나라에서 쓰는 그레고리력은 4년에 반드시 하루씩 윤날(2월 29일)을 추가하는 율리우스력을 보완한 것으로, 태양년과의 편차를 줄이기 위해 율리우스력의 400년에서 3일(세 번의 윤년)을 뺐다.

그레고리력의 정확한 윤년 규칙은 다음과 같다.

  1. 서력기원연수가 4로 나누어 떨어지는 해는 윤년으로 한다. (1992년, 1996년, 2004년, 2008년, 2012년, 2016년, 2020년, 2024년, 2028년, 2032년, 2036년, 2040년...)
  2. 서력기원연수가 4, 100으로 나누어 떨어지는 해는 평년으로 한다. (1900년, 2100년, 2200년, 2300년, 2500년...)
  3. 서력기원연수가 4, 100, 400으로 나누어 떨어지는 해는 윤년으로 둔다. (2000년, 2400년...)

[ 위키 영문에서 알려주는 윤년 알고리즘 ]
if
 (year is not divisible by 4) then (it is a common year)
else if (year is not divisible by 100) then (it is a leap year)
else if (year is not divisible by 400) then (it is a common year)
else (it is a leap year)

다시 정리해보자면.... 이렇게 되는데
1. 연수가 4로 나누어 떨어지는 해는 윤년
2. 1의 해 중에서 100으로 나누어지는 해는 평년
3. 2의 해 중에서 400으로 나누어 지는 해는 윤년

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
"""
1900년부터 2200년까지의 윤년계산하기
"""
 
# ---------------------------------
# C 처럼 하나씩 풀기
# ---------------------------------
= []
for k in range(1900,2201):
    if(not k%4):
        if(k%100):
            l.append(k)
        elif(not k%400):
            l.append(k)
print(l)
 
# ---------------------------------
# if 구문 중첩 조건으로 풀기
# ---------------------------------
l2 = []
for k in range(1900,2201):
    if(not k%4 and k%100 or not k%400):
        l2.append(k)
print(l2)
 
# ---------------------------------
# 리스트 내장(List Comprehension으로 풀기
# ---------------------------------
l3 = [k for k in range(1900,2201if(not k%4 and k%100 or not k%400)]
print(l3)
 
cs

3가지 모두 결과는 동일하다.

[1904, 1908, 1912, 1916, 1920, 1924, 1928, 1932, 1936, 1940, 1944, 1948, 1952, 1956, 1960, 1964, 1968, 1972, 1976, 1980, 1984, 1988, 1992, 1996, 2000, 2004, 2008, 2012, 2016, 2020, 2024, 2028, 2032, 2036, 2040, 2044, 2048, 2052, 2056, 2060, 2064, 2068, 2072, 2076, 2080, 2084, 2088, 2092, 2096, 2104, 2108, 2112, 2116, 2120, 2124, 2128, 2132, 2136, 2140, 2144, 2148, 2152, 2156, 2160, 2164, 2168, 2172, 2176, 2180, 2184, 2188, 2192, 2196]

 

+ Recent posts