문제 설명
주어진 연도가 윤년인지 판단하는 문제입니다.
입력
4000 이하의 자연수 N에 대해
출력
N년이 윤년이면
N년이 윤년이 아니면
풀이
n의 배수인지 확인하는 것은 나머지 연산자를 통해 할 수 있습니다. n으로 나눈 나머지가 0이면 해당 숫자는 n의 배수인 것이죠. 나머지 연산과 논리 연산자를 이용하여 입력받은 연도가 4의 배수이며 100의 배수가 아니거나, 400의 배수인지 체크할 수 있습니다.
윤년의 조건은 4의 배수이거나 100의 배수가 아닌 경우, 400의 배수인 경우입니다. 이를 논리식으로 보면 ((4로 나누어 떨어짐) and not (100으로 나누어 떨어짐)) or (400으로 나누어 떨어짐)
이 됩니다. 이것을 코드로 구현하면
((N % 4 == 0) || (N % 100) != 0) && (N % 400 == 0)
로 쓸 수 있습니다. 이 조건식을 만족하면 윤년(1), 만족하지 않으면 윤년이 아닌 경우(0)임을 출력합니다.
C++
#include <iostream>
using namespace std;
int main() {
int N;
cin >> N;
if (((N % 4 == 0) || (N % 100) != 0) && (N % 400 == 0))
cout << "1" << endl;
else
cout << "0" << endl;
}
Python 3
N = int(input())
if ((N % 4 == 0) or (N % 100 != 0)) and (N % 400 == 0):
print(1)
else:
print(0)