백준 2753번: 윤년 (수학, 구현, 사칙연산)
https://www.acmicpc.net/problem/2753
문제
연도가 주어졌을 때, 윤년이면 1, 아니면 0을 출력하는 프로그램을 작성하시오.
윤년은 연도가 4의 배수이면서, 100의 배수가 아닐 때 또는 400의 배수일 때이다.
예를 들어, 2012년은 4의 배수이면서 100의 배수가 아니라서 윤년이다. 1900년은 100의 배수이고 400의 배수는 아니기 때문에 윤년이 아니다. 하지만, 2000년은 400의 배수이기 때문에 윤년이다.
입력
첫째 줄에 연도가 주어진다. 연도는 1보다 크거나 같고, 4000보다 작거나 같은 자연수이다.
출력
첫째 줄에 윤년이면 1, 아니면 0을 출력한다.
예제 입력 1
2000
예제 출력 1
1
예제 입력 2
1999
예제 출력 2
0
풀이
n = int(input())
if ((n % 4 == 0) and (n % 100 != 0 or n % 400 == 0)):
print(1)
else:
print(0)
윤년(Leap Year)이란?
윤년은 지구가 태양을 한 바퀴 도는 데 걸리는 시간(약 365.2425일)을 보정하기 위해 설정된 개념으로, 윤년에는 하루가 추가되어 총 366일이 됩니다. 윤년의 기준은 다음과 같습니다.
- 4의 배수: 연도가 4로 나누어 떨어져야 합니다.
- 100의 배수가 아님: 연도가 100으로 나누어 떨어지지 않아야 합니다.
- 400의 배수: 단, 연도가 400으로 나누어 떨어지면 윤년입니다.
이 규칙을 종합하면, 윤년의 조건은 다음과 같습니다.
연도가 4의 배수이면서, 100의 배수가 아니거나, 400의 배수인 경우
먼저, 사용자가 입력한 연도를 정수로 변환하여 변수 n에 저장합니다.
그후 입력받은 수가 윤년에 해당하는지 조건을 검사합니다.
- n % 4 == 0: 연도가 4의 배수인지 확인합니다.
- (n % 100 != 0 or n % 400 == 0): 연도가 100의 배수가 아니거나, 400의 배수인지를 확인합니다.
- 전체 조건은 연도가 4의 배수이면서, 100의 배수가 아니거나 400의 배수인 경우를 의미합니다.
윤년의 조건을 논리적으로 표현하면 다음과 같습니다.
윤년 ↔ (4의 배수) AND (100의 배수가 아니거나 400의 배수)
'⌨️ Python & Algorithm' 카테고리의 다른 글
[백준] 2562번: 최댓값 (by Python / 파이썬) (0) | 2025.01.26 |
---|---|
[백준] 2439번: 별 찍기 - 2 (by Python / 파이썬) (0) | 2025.01.23 |
[백준] 2475번 : 검증수 (by Python / 파이썬) (0) | 2025.01.21 |
[백준] 10871번 : X보다 작은수 (by Python / 파이썬) (0) | 2025.01.21 |
[Python] Logging (로깅) & 정규 표현식 (0) | 2024.07.17 |