문제 설명
주어진 연도가 윤년인지 판단하는 문제입니다.
입력
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)