https://school.programmers.co.kr/learn/courses/30/lessons/12901
2016년 1월 1일은 금요일입니다. 2016년 a
월 b
일은 무슨 요일일까요? 두 수 a
,b
를 입력받아 2016년 a
월 b
일이 무슨 요일인지 리턴하는 함수, solution을 완성하세요. 요일의 이름은 일요일부터 토요일까지 각각 SUN,MON,TUE,WED,THU,FRI,SAT
입니다. 예를 들어 a=5, b=24라면 5월 24일은 화요일이므로 문자열 "TUE"를 반환하세요.
2016년은 윤년입니다.
2016년 a월 b일은 실제로 있는 날입니다. (13월 26일이나 2월 45일같은 날짜는 주어지지 않습니다)
a | b | result |
---|---|---|
5 | 24 | "TUE" |
class Solution {
public String solution(int a, int b) {
String answer = "";
int start=0;
switch(a){
case 1: case 4: case 7:
start=6;
break;
case 2: case 8:
start=2;
break;
case 3: case 11 :
start=3;
break;
case 5 :
start=1;
break;
case 6 :
start=4;
break;
case 9: case 12:
start=5;
break;
case 10:
start=7;
break;
}
for(int i=0;i<=4;i++){
if((1+7*i)<=b && b<(1+7*(i+1))){
int distance=b-(1+7*i);
answer=week(start+distance);
}
}
return answer;
}
public String week(int n){
String word="";
if(n>=8){
n=n-7;
}
switch(n){
case 1:
word="SUN";
break;
case 2:
word="MON";
break;
case 3:
word="TUE";
break;
case 4:
word="WED";
break;
case 5:
word="THU";
break;
case 6:
word="FRI";
break;
case 7:
word="SAT";
break;
}
return word;
}
}
처음에 start+distance
가 8을 넘을 경우를 생각하지 못했다.
그래서 8을넘으면 7을 빼주도록 하여 해결하였다.