

윤년을 구하는 문제
윤년이란 4의 배수이면서, 100의 배수가 아니거나 400의 배수인 연도
ex)
2000년 = 윤년 ☞ 100의 배수이지만 400의 배수에도 포함이 되기때문에 윤년으로 처리
2020년 = 윤년 ☞ 4의 배수이면서 100의 배수가 아님
1999년 = 윤년 X ☞ 어느 조건에도 포함이 되지 않음
풀이
#include <iostream>
using namespace std;
int main() {
int year;
cin >> year; //연도 입력
//4의 배수이면서 100의 배수가 아닌 것 or 400의 배수
if ((year % 4 == 0 && year % 100 != 0 )|| year % 400 == 0)
cout << "1";
else
cout << "0";
}
'100의 배수가 아닌면서 400의 배수'라는 문장때문에 헷갈릴 수 있는 문제이다.
4의 배수, 100의 배수가 아닌 것, 400의 배수 3가지 조건을 이해하는 것이 중요하다
1. 먼저 윤년은 4의 배수를 기본 베이스로 깔고 있으며
2. 100의 배수 중 400의 배수만 살려야 한다.
3. 400의 배수는 4의 배수와 100의 배수를 모두 포함 하고 있는 수 400, 800, 1200, 1600...
그렇다면 1, 2의 조건을 먼저 묶어, 4의 배수이면서 100의 배수가 아닌 수를 구하게 되면
윤년을 알아낼 수 있다. ex) 404, 2020 2040...
또 3의 조건은 1의 조건을 자연스럽게 포함을 하고 있기 때문에 독자적으로 사용이 가능하므로
if문을 사용하여 위처럼 조건을 설정하여 윤년을 구할 수 있고
조건에 해당되지 않는 값은 0으로 출력한다.
2753번: 윤년
연도가 주어졌을 때, 윤년이면 1, 아니면 0을 출력하는 프로그램을 작성하시오. 윤년은 연도가 4의 배수이면서, 100의 배수가 아닐 때 또는 400의 배수일 때이다. 예를 들어, 2012년은 4의 배수이면서
www.acmicpc.net
'알고리즘 > 백준' 카테고리의 다른 글
<백준> 1110번 더하기 사이클 java 문제풀이 (0) | 2022.01.05 |
---|---|
<백준> 1712번 손익분기점 C++ 문제풀이 (0) | 2021.02.02 |
<백준> 4344번 평균은 넘겠지 C++ 문제풀이 (0) | 2021.01.26 |
<백준> 2884번 알람시계 C++ 문제풀이 (0) | 2021.01.07 |

IT
github : https://github.com/HanSungHyeon