반응형
(c언어를 기준으로 하여 풀이를 하겠습니다.)
먼저 문제에 나와있는 윤년의 정의는 이렇습니다.
연도가 4의 배수인 동시에 100의 배수가 아닐 때 또는 400의 배수일 때 이다.
처음 들으실 때는 헷갈리기 쉬운 문장입니다. 하지만 천천히 짚어 보면 어렵지 않은 기초적인 문제입니다. 문제에 나온 문장을 하나씩 되짚어 봅시다.
"연도가 4의 배수인 동시에 100의 배수가 아닐 때"
-> 4의 배수면 4로 나누었을 때 나머지가 0일 것이고, 마찬가지로 100의 배수면 100으로 나누었을 때 나머지가 0일 것 입니다.
즉, 비교 연산자를 사용하여 표기하면
x%4==0&&x%100!=0 이 됩니다. (여기서 x는 연도 입니다.)
4의 배수인 경우인 동시에, 100의 배수인 경우를 먼저 걸러 줍니다.
"또는 400의 배수일 때 이다."
->위에 나온 조건에다가 또는 400의 배수라는 조건을 추가해 주시면 됩니다.
||x%400==0 이라는 수식을 추가하면 됩니다.
그렇게 위에서 구한 수식을 다 합쳐 보면
year%4==0&&year%100!=0||year%400==0
라는 판별식이 간단하게 만들어 집니다.
1 2 3 4 5 6 7 8 9 | #include<stdio.h> int main() { int year; scanf("%d",&year); if(year%4==0&&year%100!=0||year%400==0) printf("1"); else printf("0"); } | cs |
이와 비슷한 방식으로, 파이썬으로도 이 문제를 풀어봅시다.
파이썬은 &&를 and로, ||를 or로 바꾸어 주기만 하면 쉽게 풀립니다.
1 2 3 4 5 6 7 8 9 | import sys n=int(input()) if n%4==0 and n%100!=0 or n%400==0: print(1) sys.exit() print(0) | cs |
반응형
'개발 지식 > 알고리즘' 카테고리의 다른 글
[백준] 9663 N-Queen (0) | 2021.04.07 |
---|---|
[백준] 2588 곱셈 (0) | 2019.12.23 |
[백준] 2606 바이러스 (0) | 2019.07.12 |
[백준] 2884 알람 시계 (0) | 2019.06.30 |
[백준] 4673 셀프 넘버 (0) | 2019.06.30 |