C_C++
C++ - 백준 2948 2009년
ncode
2024. 11. 18. 07:13
728x90
반응형
/* 백준 2948 2009년
https://www.acmicpc.net/problem/2948
* 문제
2009년 날짜가 주어졌을 때, 무슨 요일인지 출력하는 프로그램을 작성하시오.
* 입력
첫째 줄에 D와 M이 주어진다. M월 D일이다.
* 출력
2009년 M월 D일의 요일을 영어로 출력한다. 출력은 다음 중 하나이다. "Monday", "Tuesday",
"Wednesday", "Thursday", "Friday", "Saturday", "Sunday".
* 예제 입력 1
1 1
* 예제 출력 1
Thursday
* 예제 입력 2
17 1
* 예제 출력 2
Saturday
* 예제 입력 3
25 9
* 예제 출력 3
Friday
*/
/** 풀이
달력그리기 문제입니다.
1. 2009년 1월 1일은 목요일이다. 이거 중요합니다.
2. 2009년은 윤년이 아니다. 이것도 중요하죠.
3. 2009년 1월 1일 부터 m월 d일까지 며칠이 지났는지를 구해서 이것을 7로 나눈 나머지를
이용해서 문제를 풉니다.
*/
#include <iostream>
#include <string>
bool is_leap_year(int year) {
return ((year > 0) && !(year % 4) && ((year % 100) || !(year % 400)));
}
int main() {
int d, m;
std::cin >> d >> m;
std::string weekday_names[7] = {
"Thursday",
"Friday",
"Saturday",
"Sunday",
"Monday",
"Tuesday",
"Wednesday"
};
const int days_of_month[12] = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
// 2009 년 1월 1일 부터 m월 d일 까지의 전체 날 수
int total_days = 0;
for (int i = 0; i < m - 1; ++i)
total_days += days_of_month[i];
total_days += d - 1;
// 해당 요일 출력
std::cout << weekday_names[total_days % 7] << '\n';
}
728x90
반응형