728x90
문제
연도가 주어졌을 때, 윤년이면 1, 아니면 0을 출력하는 프로그램을 작성하시오.
윤년은 연도가 4의 배수이면서, 100의 배수가 아닐 때 또는 400의 배수일 때이다.
예를 들어, 2012년은 4의 배수이면서 100의 배수가 아니라서 윤년이다.
1900년은 100의 배수이고 400의 배수는 아니기 때문에 윤년이 아니다.
하지만, 2000년은 400의 배수이기 때문에 윤년이다.
https://www.acmicpc.net/problem/2753
입력
첫째 줄에 연도가 주어진다. 연도는 1보다 크거나 같고, 4000보다 작거나 같은 자연수이다.
출력
첫째 줄에 윤년이면 1, 아니면 0을 출력한다.
예제 입력 1
2000
예제 출력 1
1
예제 입력 2
1999
예제 출력 2
0
문제 풀이
a = int(input())
if a % 4 == 0 and a % 100 != 0 or a % 400 == 0 :
print('1')
else :
print('0')
연도를 입력받고, if문을 활용하여 조건에 맞는 값을 출력하였습니다.
문제에서 제시한 조건은 아래와 같습니다
조건 1. 연도가 4의 배수이면서, 100의 배수가 아닐 때
조건 2. 400의 배수일 때
조건 1의 경우 2가지 조건을 모두 충족하여야 하기에 *and 연산자를 활용했으며,
조건 1 혹은 조건 2 둘 중 하나만 충족하여도 윤년이기에 *or 연산자를 활용했습니다.
and 연산자 : 앞 뒤에 객체가 True인 경우에만 True를 반환함.
둘 중 하나만 True거나 모두 False인 경우 False를 반환
or 연산자 : 둘 중 하나만 True이더라도 True를 반환함.
이전 포스팅과 같이 삼항 연산자로도 아래와 같이 풀 수 있습니다.
a = int(input())
print('1') if a%4 == 0 and a%100 != 0 or a%400 == 0 else print('0')
저처럼 파이썬을 독학하시는 분들에게 도움이 되길 바라며,
혹 더 좋은 방법이 있거나 오류가 있다면 편하게 말씀 부탁드립니다.
728x90