2016년 a월 b일은 몇 요일일까를 맞추는 문제이다. 이때, 2월은 29일이라는 걸 주의해야 한다(!!!).
일단 2016년 달의 날자를 모두 month벡터에 넣어줬다. 1월부터 할 거기 때문에 앞에 0을 넣어 [0]에는 값이 없도록 했다.
다음은 요일을 벡터로 넣어줄 차례다. 이때, 1월 1일은 금요일이라는 점에 주목했다. 일주일은 총 7일이니까 7로 나누면 나머지가 0인 요일은 목요일, 1인 요일은 금요일, 2인 요일은 토요일일 거 아닌가. 그렇게 요일 벡터에 값을 넣어줄 때는 목요일부터 시작해서 넣어주었다.
요일을 구하는 계산은 간단하다. a월 이전의 날짜를 전부 더한 다음 b일의 날자를 더해서 그걸 7로 나눈 나머지가 가리키는 값이 그 요일이다.
다만, 2월이 29일이란 점을 잊어서는 안 된다. 28일 넣고 왜 안 되지??? 내가 이랬었기 때문...
#include <string>
#include <vector>
using namespace std;
string solution(int a, int b) {
string answer = "";
vector<int> month = {0, 31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30,31};
vector<string> day = {"THU", "FRI", "SAT", "SUN", "MON", "TUE", "WED"};
int sum = 0;
for(int i = 1; i < a; i++){
sum = sum + month[i];
}
sum = sum + b;
answer = day[sum%7];
return answer;
}