1. 제목
[백준] 2753번: 윤년 (파이썬 활용)
2. 문제 정보
- 문제 링크: https://www.acmicpc.net/problem/2753
- 문제 요약: 연도를 입력받아 윤년이면 1, 아니면 0을 출력하는 문제입니다

3. 풀이
문제에서 윤년의 조건을 제시해줬습니다
연도가 4의 배수이면서 100의 배수가 아닐 때 또는 400의 배수일 때가 윤년이라고 합니다
연도를 숫자로 입력받습니다.
if 조건문을 사용하여 윤년의 조건을 검사합니다.
(연도가 4의 배수 그리고 연도가 100의 배수가 아님) 또는 (연도가 400의 배수)
조건이 참이면 1을, 거짓이면 0을 출력합니다.
핵심은 문제에 주어진 윤년의 조건을 표현하는 if문입니다
#(year 변수에 입력받은 연도가 저장 됐다고 가정)
if (year % 4 == 0 and year % 100 != 0) or (year % 400 == 0):
print(1)
else:
print(0)
- year % 4 == 0: 연도를 4로 나눈 나머지가 0인지 확인합니다. 즉, 4의 배수인지 확인하는 조건입니다
- year % 100 != 0: 연도를 100으로 나눈 나머지가 0이 아닌지 확인합니다. 즉, 100의 배수가 아닌지를 확인하는 조건입니다.
- year % 400 == 0: 연도를 400으로 나눈 나머지가 0인지 확인합니다. 즉, 400의 배수인지 확인하는 조건입니다
and와 or 연산자를 사용하여 이 세 가지 조건을 문제의 설명과 똑같이 조합했습니다. () 괄호를 사용하여 and 조건이 먼저 평가되도록 명확하게 표현해주는 것이 중요합니다.
전체 코드
#연도 입력받기
year = int(input())
#조건
if (year % 4 == 0 and year % 100 != 0) or (year % 400 == 0):
#조건이 참이면 1을 출력
print(1)
else:
#조건이 참이면 0을 출력
print(0)
4. 회고
어려웠던 점: 처음 문제를 봤을때 머리로는 이해가 되었는데 코드로 작성하려고 하다보니 헷갈려서 헤맸습니다. 4의 배수와 100의 배수, 400의 배수의 관계를 and와 or로 헷갈리지 않고 표현하면서 묶는 것이 중요했고 (A and B) or C 구조에서 괄호의 중요성을 다시 한번 생각하게 된 문제였습니다
개선할 점: 주어진 조건을 그대로 코드로 옮긴 현재의 풀이가 가장 직관적이고 효율적이라고 생각합니다
if-elif-else를 중첩해서 풀 수도 있지만 가독성에서는 논리 연산자를 사용하여 한 줄로 표현하는 것이 더 깔끔하지 않을까 싶습니다.
'개발 > 백준 알고리즘' 카테고리의 다른 글
| [백준] 2743: 단어 길이 재기 (Python) (0) | 2025.10.31 |
|---|---|
| [백준] 2480: 주사위 세개 (Python) (0) | 2025.10.20 |
| [백준] 2884: 알람 시계 (Python) (0) | 2025.10.11 |
| [백준] 14681: 사분면 고르기 (Python) (0) | 2025.10.04 |
| [백준] 1330: 두 수 비교하기 (0) | 2025.09.28 |