class Solution {
public String solution(int a, int b)
{
String answer = "";
if ( a == 10)
{
b += 1;
}
else if ( a == 5)
{
b += 2;
}
else if ( a == 2 || a == 8)
{
b+=3;
}
else if ( a == 3 || a == 11)
{
b+=4;
}
else if ( a == 6)
{
b+=5;
}
else if ( a == 9 || a == 12)
{
b+=6;
}
b %= 7;
switch(b)
{
case 1:
answer = "FRI";
break;
case 2:
answer = "SAT";
break;
case 3:
answer = "SUN";
break;
case 4:
answer = "MON";
break;
case 5:
answer = "TUE";
break;
case 6:
answer = "WED";
break;
case 0:
answer = "THU";
break;
}
return answer;
}
}
설명할 것도 없이 망한 코드와 아래에 알고리즘을 적용한 코드
class Solution {
public String solution(int a, int b)
{
String answer = "";
// 요일배열 설정 ( 1일이 금요일이기 때문에 1번 인덱스에 FRI 배치 )
String[] day = { "THU", "FRI", "SAT", "SUN", "MON", "TUE", "WED" };
// 각 월에 해당하는 날짜를 가진 int[] 설정
int[] date = { 31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 };
// allDate값 초기화
int allDate = 0;
// 전달받은 월까지 반복
for (int i = 0; i < a - 1; i++) {
// 각월에 해당하는 일수 만큼 allDate에 추가
allDate += date[i];
}
// allDate에 전달받은 일수 만큼 추가
allDate += b;
// allDate를 7로 나눠 해당하는 요일 인덱스값 반환
answer = day[allDate % 7];
return answer;
}
}
알고리즘을 통해 코드를 보다 가볍고 이해하기 쉽게 만들어야 하는 이유를 느낀 문제