이 문제를 푸는 가장 쉬운 방법은 Calendar 클래스를 사용하는 것 입니다. 하지만 개인적인 생각으로는 본 문제의 의도는 Calendar 클래스를 이용하는 것이 아닌, 스스로 로직을 만들어서 해결하는 것이라고 생각하여 Calendar 클래스를 사용하지 않고 해결하였습니다.
public String solution(int a, int b) {
String answer = "";
boolean is31Days = true; // 현재가 31일까지 있는지 30일까지 있는지를 판별하기 위한 flag. 1월은 31일까지 있다.
int days = 5; // 2016.01.01.은 금요일
for(int i = 1; i <= a; i++) { // 1월부터 a월까지 반복한다
if(i != a && is31Days) { // 목표월이 아니고 31일까지 있는 달의 경우
days += 31; // 31일을 추가한다
if(i != 7) is31Days = false; // 7월 다음의 8월도 31일이므로 7월이 아닐때에만 31일 관련 플래그를 변경해준다.
} else if(i != a && is31Days == false) { // 목표월이 아니고 31일까지 있는 달의 경우
if(i == 2) days += 29; // 2016년의 2월은 윤년으로써 29일까지 있었다.
else days += 30; // 그외에는 30일을 더해준다.
is31Days = true; // 30일인 달의 다음달은 반드시 31일이다.
}
}
days += b - 1; // b를 그대로 더하면 2016.01.01은 토요일이 되므로 1을 빼준다. (반복문때문에)
answer = getDay(days % 7); // 7을 나눈 나머지를 인수로 보내 요일을 판별한다.
return answer;
}
public String getDay(int date){
//0일 1월 2화 3수 4목 5금 6토
switch(date){
case 0: return "SUN";
case 1: return "MON";
case 2: return "TUE";
case 3: return "WED";
case 4: return "THU";
case 5: return "FRI";
default: return "SAT";
}
}