https://www.acmicpc.net/problem/1924
문제
> 오늘은 2007년 1월 1일 월요일이다.
> 2007년 x월 y일은 몇요일인지 구하여라.
접근
각 달의 일 수를 vector에 저장해 놓고 월과 일이 들어오면 전달까지의 모든 일수를 더하고 추가로 들어온 일 수를 더한다.
그 값을 7로 나눠 나온 나머지에 따라 요일을 출력한다.
문제해결
> vector로 각 달의 일 수를 미리 저장한다.
> 월과 일을 입력받고 입력받은 월의 전달까지의 모든 일 수를 더하고 입력받은 일수도 더해준다.
> 각 달은 1일부터 시작하므로 더한 값에 1을 빼준 값의 7로 나누었을때의 나머지를 구한다.
> 0부터 6까지의 경우에 각각 월,화,수,목,금,토,일로 주고 계산결과에 따라 출력한다.
> 1월달인 경우 전달까지의 일 수를 더하는 과정 없이 입력받은 일수에 계산한다.
코드
#include <iostream>
#include <algorithm>
#include <vector>
using namespace std;
int main()
{
ios::sync_with_stdio(false);
cin.tie(nullptr);
cout.tie(nullptr);
vector<int> Mday = { 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 };
int x, y;
cin >> x >> y;
int Totalday = y;
if (x > 1)
{
for (int i = 0; i < x - 1; i++)
{
Totalday += Mday[i];
}
}
switch ((Totalday - 1) % 7)
{
case 0: cout << "MON" << '\n'; break;
case 1: cout << "TUE" << '\n'; break;
case 2: cout << "WED" << '\n'; break;
case 3: cout << "THU" << '\n'; break;
case 4: cout << "FRI" << '\n'; break;
case 5: cout << "SAT" << '\n'; break;
case 6: cout << "SUN" << '\n'; break;
default: break;
}
}

후기
EZ