티스토리 뷰

728x90
반응형

백준 온라인 저지(BOJ) 2753번 윤년

https://www.acmicpc.net/problem/2753

 

2753번: 윤년

연도가 주어졌을 때, 윤년이면 1, 아니면 0을 출력하는 프로그램을 작성하시오. 윤년은 연도가 4의 배수이면서, 100의 배수가 아닐 때 또는 400의 배수일 때이다. 예를 들어, 2012년은 4의 배수이면서

www.acmicpc.net

* 사용언어 : Python 파이썬

 

1. 문제

연도가 주어졌을 때, 윤년이면 1, 아니면 0을 출력

윤년은 연도가 4의 배수이면서, 100의 배수가 아니어야 하지만 400의 배수는 윤년

 

2. 풀이

이러한 유형의 문제는 조건문의 순서를 잘 정하는 것이 중요합니다.

 

왜냐하면 반복되는 조건문(if ~ elif ~ elif ~ ... ~ else) 중 아래 쪽에 참인 조건이 있어도

위쪽에서 먼저 filtering 된다면 아래 쪽 statement 는 수행될 수 없기 때문입니다.

 

따라서 filtering 우선 순위에 따라 if 문 순서를 정하는 것이 일반적인데,

특별한 우선 순위가 없다면 범위가 가장 작은 조건 부터 작성해주면 됩니다.

 

이 문제는 {400의 배수} ⊂ {100의 배수} {4의 배수} 이므로

범위가 가장 작은 400의 배수부터 처리해주면 됩니다.

 

나머지 설명은 아래 코드로 대체하겠습니다.

 

3. 코드

# 2753_윤년
# 31256KB	40ms
year = int(input())
if year % 400 == 0:
    print(1)
elif year % 100 == 0:
    print(0)
elif year % 4 == 0:
    print(1)
else:
    print(0)

 

728x90
반응형
댓글