본문 바로가기
  • Top Genius in the world
알고리듬

[알고리듬] #43 윤년과 평년(1)

by Mr.Algo 2024. 4. 7.
728x90
반응형

[key word] 그레고리력, 순서도

파이썬 실습창을 열 수 있습니다.실습창 열기

판단력은 사고력의 기본입니다.

 

 

 

1.  윤년과 평년  

  • 지구가 태양의 둘레를 한 바퀴 도는 데는 365일 5시간 48분 46초가 걸립니다.
  • 1년을 365일로 하면 4년 후에는 약 1일 정도 차이가 납니다. 그래서 4년마다 1년을 366일로 합니다. 그런데 366일로 하면 지구가 원래의 위치보다 조금 더 지나게 됩니다. 그래서 100년에 한 번씩 366일로 하지 않고 365일로 합니다. 이렇게 하여도 차이가 있어 400년에 한 번씩은 366일로 하여야 합니다.
  • 이러한 방법으로 만든 달력이 그레고리력(Gregorian calendar)입니다. 1582년에 교황 그레고리 13세가 도입한 날짜 결정 체계입니다.

그레고리력의 윤년과 평년을 판단하는 방법을 정리하면 다음 그림과 같습니다.

  • 윤년(leap year)은 1년이 366일인 연도이고(2월이 29일),
  • 평년(common year)은 1년이 365일인 연도입니다(2월이 28일).

 

다음의 연도가 윤년인지 평년인지 판단하여 보세요.

연도 윤평판단
2000년  
2024년  
2025년  
2100년  

 

더보기
연도 윤평판단 이유
2000년 윤년 400의 배수
2024년 윤년 4의 배수이지만 100의 배수 아님
2025년 평년 4의 배수 아님
2100년 평년 100의 배수이지만 400의 배수 아님

 

2. 코딩하기

윤년과 평년의 판단을 컴퓨터가 하게 할 수 없을까?

컴퓨터에게 시켜봅시다.

 

2-1 밖에서 안으로

생각을 정리하여 봅시다.

 

왼쪽의 벤-다이어그램과 오른쪽의 계통도를 비교하여 보세요.

  • 연도가 4의 배수이면 1부분(100의 배수부분)을 판단해야하고 아니면 평년입니다.
  •  100의 배수이면 2부분(400의 배수 부분)을 판단해야 하고 아니면 윤년입니다.
  • 400의 배수이면 윤년, 아니면 평년입니다.

확실히 이해하여야 합니다.

이해되지 않으면 코딩할 수 없습니다.

이해를 돕기 위하여 순서도(flow chart)를 그려보았습니다.

충분히 이해되었으면 아래의 코드를 보십시오.

y=2024
if y%4==0:               # 4로 나눈 나머지가 0과 같으면 4의 배수  
    if y%100==0:         # 100으로 나눈 나머지가 0과 같으면 100의 배수
        if y%400==0:     # 400으로 나눈 나머지가 0과 같으면 400의 배수 
            r='윤년'      
        else:            # 400의 배수가 아니면
            r='평년' 
    else:                # 100의 배수가 아니면
        r='윤년'
else:                    # 4의 배수가 아니면
    r='평년' 
    
print(r)

'''
r에 값이 바인딩 된 다음에는 마지막 줄에 있는 print(r)을 실행합니다.
'''

 

이 프로그램을 보지않고 코딩하세요.

안보고 코딩한 사람만 다음으로 진행하세요.

 

2-2 안에서 밖으로

윤년과 평년의 판단을 안쪽에서 밖으로 나가면서 하여 봅시다.

위의 그림과 비교하세요.

연도가 400의 배수이면
        윤년
아니고 100의 배수이면
        평년
아니고 4의 배수이면
         윤년
아니면
         평년     

이해가 되셨습니까?

코딩하여 봅시다.

y=2025
if y%400==0:
    r='윤년'
elif y%100==0:
    r='평년'
elif y%4==0:
    r='윤년'
else:
    r='평년'
print(r)

'''
r에 값이 바인딩 된 다음에는 마지막 줄에 있는 print(r)을 실행합니다.
'''

 

원리를 이해하여 보지않고 코딩할 수 있으면 통과입니다.

다른 방법은 다음 시간에 공부합니다.

 

수고하셨습니다.

오늘 끝.

728x90
반응형