문제를 풀때 조건을 제대로 보지 않았다. 윤년은 4년마다 한 번씩 4월이 29일까지 있는 해 이다.
각 달마다 날짜의 개수를 days 배열에 저장한다. 또한 2016년 1월 1일은 금요일부터 시작한다는 조건이 있으므로 wee 배열에 금요일부터 순서대로 요일을 저장한다.
a월 b일의 a, b가 주어졌을 때, a달 이전의 모든 달의 개수 즉, a-1달까지의 모든 일수를 더하고 b를 더한다. 그러면 1월1일부터 며칠이 경과했는지를 알 수 있다.
누적 일 수에 -1 을 뺀 후, %7을 한 나머지 값을 인덱스 삼아 wee에서 해당 날짜의 요일을 불러오면 된다.
#include <string>
#include <vector>
#include <iostream>
using namespace std;
// 윤년!!
// 31 29 31 30 31 30 31 30 31 30 31 30
// 금 토 일 월 화 수 목
string solution(int a, int b) {
string answer = "";
vector<string> wee = {"FRI", "SAT", "SUN", "MON", "TUE", "WED", "THU"};
vector<int> days = {31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
int s = 0;
for(int i=0; i<a-1; i++) {
s += days[i];
}
s += b;
answer = wee[(s+6)%7];
return answer;
}