개발 지식/알고리즘

[백준] 2753 윤년

트리맨스 2019. 12. 18. 23:39
반응형



(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==0printf("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