반응형
2753번: 윤년
연도가 주어졌을 때, 윤년이면 1, 아니면 0을 출력하는 프로그램을 작성하시오. 윤년은 연도가 4의 배수이면서, 100의 배수가 아닐 때 또는 400의 배수일 때이다. 예를 들어, 2012년은 4의 배수이면서
www.acmicpc.net
먼저, 연도를 입력받아 변수 y에 저장한다.
윤년의 조건은 연도가 4의 배수이면서, 100의 배수가 아닐 때 또는 400의 배수일 때이다.
즉, 다음 두 가지 경우이다.
- 연도가 4의 배수이면서, 100의 배수가 아닐 때
- 연도가 400의 배수일 때
'~이면서'는 AND 연산을, '또는'은 OR 연산을 의미한다.
조건을 좀 더 코드를 작성하기 편하게 쓰면 다음과 같다.
- (연도가 4의 배수) && (100의 배수가 아님)
또는(OR)
- 연도가 400의 배수
즉, ( ( (연도가 4의 배수) && (100의 배수가 아님) ) || (연도가 400의 배수) ) 이다.
어떤 수 A가 어떤 수 B의 배수가 된다는 것은,
A를 B로 나누었을 때 나머지가 0이라는 것이다.
코드로 작성하면 A % B == 0
이다.
반대로 A가 B의 배수가 아니라는 것은
A를 B로 나누었을 때 나머지가 0이 아니라는 것이다.
코드로 작성하면 A % B != 0
이다.
위의 설명을 종합해 보면,
조건문은 (((y % 4 == 0) && (y % 100 != 0)) || (y % 400 == 0))
이 된다.
#include <stdio.h>
int main(void) {
int y; // 1. 연도를 저장할 변수 선언
scanf("%d", &y); // 2. 연도를 입력받아 변수 y에 저장
if (((y % 4 == 0) && (y % 100 != 0)) || (y % 400 == 0)) { // 윤년이면
printf("1"); // 1 출력
}
else { // 윤년이 아니면
printf("0"); // 2 출력
}
return 0;
}
반응형
'PS > 백준' 카테고리의 다른 글
[백준] 2884번: 알람 시계 [C] (1) | 2023.01.03 |
---|---|
[백준] 14681번: 사분면 고르기 [C] (0) | 2023.01.03 |
[백준] 9498번: 시험 성적 [C] (0) | 2023.01.03 |
[백준] 1330번: 두 수 비교하기 [C] (0) | 2023.01.03 |
[백준 > 단계별로 풀어보기] 1단계 입출력과 사칙연산 (답) [C / C++] (0) | 2023.01.03 |