※ 글쓴이는 취미로 코딩을 익혀보는 사람이라 정확하지 않은 내용을 담고 있을 수 있다 ※
이번에 볼 문제는 백준 25286번 문제인 11월 11일이다.
문제는 아래 링크를 확인하자.
https://www.acmicpc.net/problem/25286
25286번: 11월 11일
11월 11일에는 농업인의 날, 가래떡 데이, 보행자의 날, 대한민국 해군 창설 기념일, 유엔참전용사 추모의 날, 빼빼로 데이 등 다양한 의미를 가진 날이다. 성현이는 11월 11일의 11일 전은 10월 31일,
www.acmicpc.net
m월 m일의 m일 이전 날은 (m월의 전달)의 마지막 날이 된다는 점을 관찰하고, 이를 이용해 구현하자.
1월의 이전달은 전년도 12월임에 유의하자.
또한, 문제에서 주어진 윤년의 설명을 잘 보고 그에 따라 m=3이 주어졌을 때의 출력을 구현하자.
2월이 아닌 다른 달의 경우 아래와 같이 각 달의 마지막 날이 몇일인지를 저장해둔 배열을 만들어 두면 구현을 비교적 간단하게 할 수 있다.
아래는 제출한 소스코드이다.
#include <iostream>
using namespace std;
int date[13] = { 0,31,28,31,30,31,30,31,31,30,31,30,31 };
void solve() {
int y, m; cin >> y >> m;
if (m == 1) y--, m = 12;
else m--;
cout << y << ' ' << m << ' ';
if (m != 2) cout << date[m] << '\n';
else {
if (y % 100 == 0) {
if (y % 400 == 0) cout << 29 << '\n';
else cout << 28 << '\n';
}
else {
if (y % 4 == 0) cout << 29 << '\n';
else cout << 28 << '\n';
}
}
}
int main() {
ios::sync_with_stdio(0);
cin.tie(0);
int T; cin >> T;
while (T--) {
solve();
}
}
728x90
'BOJ' 카테고리의 다른 글
[BOJ 25289 // C++] 가장 긴 등차 부분 수열 (0) | 2022.09.17 |
---|---|
[BOJ 25285 // C++] 심준의 병역판정검사 (0) | 2022.09.16 |
[BOJ 25288 // C++] 영어 시험 (0) | 2022.09.14 |
[BOJ 6131 // C++] 완전 제곱수 (0) | 2022.09.13 |
[BOJ 6130 // C++] Privileged Cows (0) | 2022.09.12 |