백준 웹사이트 "2753번 - 윤년" 문제풀이입니다.
언어는 C언어입니다. (제출 언어: C99)
문제
소스 코드
#include <stdio.h>
int main(void){
int year;
scanf("%d", &year);
if(year%400 == 0)
printf("1");
else if(year%100 == 0)
printf("0");
else if(year%4 == 0)
printf("1");
else
printf("0");
}
문제 풀이
이러한 문제는 상위 규칙부터 순서대로 다루어주는 것이 편합니다. 예를 들어, '4의 배수이면 윤년이다' 보다 상위에 있는 규칙은 '100의 배수이면 윤년이 아니다' 입니다. 1900처럼 4의 배수인 동시에 100의 배수인 연도는 윤년이 아니기 때문이죠. 최상위에 있는 규칙은 '400의 배수이면 윤년이다' 이며, 2000처럼 400의 배수이면 항상 윤년입니다. 이런 식으로 상위에 있는 규칙부터 다루어주면 편리한 점이 Line 7처럼 '100의 배수라면' 이라는 조건만 써주어도 else if의 성질에 의해 '400의 배수가 아니고, 100의 배수라면' 이라는 의미가 되기 때문입니다. Line 9 역시 '4의 배수라면' 이라는 조건만 쓰여있지만, 내포하는 의미는 '400의 배수가 아니고, 100의 배수가 아니고, 4의 배수라면'이죠.
반응형
'코딩 > 백준 BOJ' 카테고리의 다른 글
[백준/C언어] 2884번 - 알람 시계 (0) | 2021.12.22 |
---|---|
[백준/C언어] 14681번 - 사분면 고르기 (0) | 2021.12.22 |
[백준/C언어] 9498번 - 시험 성적 (0) | 2021.12.22 |
[백준/C언어] 1330번 - 두 수 비교하기 (0) | 2021.12.22 |
[백준/C언어] 2588번 - 곱셈 (0) | 2021.12.21 |