안녕하세요 보글리아입니다.
이번 시간에는 백준 2753번 문제 풀이와 해설을 해보겠습니다.
※본 풀이는 C언어와 C++ 언어의 기능을 같이 사용해서 설명드립니다※
문제
연도가 주어졌을 때, 윤년이면 1, 아니면 0을 출력하는 프로그램을 작성하시오.
윤년은 연도가 4의 배수이면서, 100의 배수가 아닐 때 또는 400의 배수일 때이다.
예를 들어 2012년은 4의 배수이면서 100의 배수가 아니라 윤년이다. 1900년은 100의 배수이고 400의 배수는 아니기 때문에 윤년이 아니다. 하지만, 2000년은 400의 배수이기 때문에 윤년이다.
- 입력 : 첫째 줄에 연도가 주어진다. 연도는 1보다 크거나 같고, 4000보다 작거나 같은 자연수이다.
- 출력 : 첫째 줄에 윤년이면 1, 아니면 0을 출력한다.
문제 풀이
- 문제 조건이 어려워 보이지만, 조건을 보면 4의 배수는 윤년으로 봅니다. 하지만 100의 배수라면 윤년으로 안 봅니다. 다만 400의 배수면 또 윤년으로 봅니다. 즉 출력한 문장이 4의 배수이며 400의 배수이면 윤년으로 보기 때문에 1을 출력하고 100의 배수라면 윤년이 아니기 때문에 0을 출력합니다.
- 알고리즘으로 보면 먼저 4의 배수인지 조건문으로 확인합니다. 그리고 4의 배수라면 400으로 나뉘어 떨어지는지 혹은 100으로 나뉘어 떨어지는지 여부를 검사합니다. 그리고 전체적으로 봤을 때 4의 배수가 아닐 때를 else 문으로 조건을 잡아줍니다.
#include <iostream>
using namespace std;
int main()
{
int year;
cin >> year; // 입력 받을 연도
if (year % 4 == 0) // 4의 배수라면?
{
if (year % 400 == 0) // 4의 배수인데 400의 배수다! 그럼 윤년이기 때문에
{
cout << true; // 1 출력
}
else if (year % 100 != 0) // 4의 배수인데 100의 배수가 아니다! 그럼 윤년이기 때문에
{
cout << true; // 1 출력
}
else
{
cout << false; // 4의 배수인데 윤년이 아니면 0 출력
}
}
else // 4의 배수가 아니면 0 출력
{
cout << false;
}
return 0;
}
'프로그래밍 언어 문제 > 코딩테스트(백준)' 카테고리의 다른 글
백준 10950번 문제 풀이 및 해설 (0) | 2023.10.08 |
---|---|
백준 9498번 문제 풀이 및 해설 (0) | 2023.10.07 |
백준 1330번 문제 풀이 및 해설 (0) | 2023.04.10 |
백준 11382번 문제 풀이 및 해설 (0) | 2023.04.10 |
백준 2739번 문제 풀이 및 해설 (0) | 2023.02.27 |
댓글