반응형
문제 링크 : https://www.acmicpc.net/problem/1924
문제
오늘은 2007년 1월 1일 월요일이다. 그렇다면 2007년 x월 y일은 무슨 요일일까? 이를 알아내는 프로그램을 작성하시오.
입력
첫째 줄에 빈 칸을 사이에 두고 x(1 ≤ x ≤ 12)와 y(1 ≤ y ≤ 31)이 주어진다. 참고로 2007년에는 1, 3, 5, 7, 8, 10, 12월은 31일까지, 4, 6, 9, 11월은 30일까지, 2월은 28일까지 있다.
출력
첫째 줄에 x월 y일이 무슨 요일인지에 따라 SUN, MON, TUE, WED, THU, FRI, SAT중 하나를 출력한다.
접근방식
처음에 좀 당황했다. 요일은 7개씩 계속 순환하는 것을 이용하면 간단히 풀 수 있다.
1월1일로부터 입력한 날짜가 며칠 떨어져 있는지 구한 후에 7로 나눈 나머지를 이용하면 쉽게 요일을 구할 수 있었다.
다른 사람들은 어떻게 해결했는지 코드를 봤는데, 스위치 문을 이용해서 해결 한 사람도 있었다. 나는 배열의 인덱스를 이용해서 접근해 봤다.
코드
#include<iostream>
using namespace std;
int Month[13] = {0, 31,28,31,30,31,30,31,31,30,31,30,31 };
const char* Week[7] = { "SUN","MON","TUE","WED","THU","FRI","SAT" };
int main()
{
int month, day;
cin >> month >> day;
for (int i = 0; i < month; i++) {
day += Month[i];
}
cout << Week[day % 7] << '\n';
return 0;
}
다른 문제의 코드 : https://github.com/DaeeYong/Algorithm-Solution-
반응형
'알고리즘 > 백준 문제풀이' 카테고리의 다른 글
[C/C++]백준 2747번 - 피보나치 수 (0) | 2021.07.27 |
---|---|
[C/C++]백준 2440문제 - 별찍기 - 3 (0) | 2021.07.26 |
백준 2309번, 언어 : C/C++ (2) | 2021.07.04 |
[C/C++]백준 2839번 - 설탕배달 (0) | 2021.03.31 |
백준 8958번, 언어 : C/C++ (0) | 2021.03.19 |