2016년 문제 풀이
2016.01.01.은 금요일이다.
2016년은 윤년이고 2016년의 월, 일이 주어질때 요일을 반환
윤년은 2월이 29일
public String solution(int a, int b) {
String answer = "FRI";
int dayAfter = 0;
if(a==1) {
dayAfter=b-1;
}else if(a==2) {
dayAfter=31+b-1;
}else if(a==3) {
dayAfter=31+29+b-1;
}else if(a==4) {
dayAfter=31+29+31+b-1;
}else if(a==5) {
dayAfter=31+29+31+30+b-1;
}else if(a==6) {
dayAfter=31+29+31+30+31+b-1;
}else if(a==7) {
dayAfter=31+29+31+30+31+30+b-1;
}else if(a==8) {
dayAfter=31+29+31+30+31+30+31+b-1;
}else if(a==9) {
dayAfter=31+29+31+30+31+30+31+31+b-1;
}else if(a==10) {
dayAfter=31+29+31+30+31+30+31+31+30+b-1;
}else if(a==11) {
dayAfter=31+29+31+30+31+30+31+31+30+31+b-1;
}else if(a==12) {
dayAfter=31+29+31+30+31+30+31+31+30+31+30+b-1;
}
if(dayAfter%7==1) {
return "SAT";
}
if(dayAfter%7==2) {
return "SUN";
}
if(dayAfter%7==3) {
return "MON";
}
if(dayAfter%7==4) {
return "TUE";
}
if(dayAfter%7==5) {
return "WED";
}
if(dayAfter%7==6) {
return "THU";
}
return answer;
}
단순 노가다로 계산
월 별 일수 계산을 배열에 담아 조금 수월하게 만들었다.
public String solution2(int a, int b) {
String answer = "";
String[] day = { "FRI", "SAT", "SUN", "MON", "TUE", "WED", "THU" };
int[] date = { 31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 };
int allDate = 0;
for (int i = 0; i < a - 1; i++) {
allDate += date[i];
}
allDate += (b - 1);
answer = day[allDate % 7];
return answer;
}
++API 사용
public String solution3(int a, int b) {
return LocalDate.of(2016, a, b).getDayOfWeek().toString().substring(0,3);
}
LocalDate의 of로 2016년 a월 b일의 날짜에 getDayOfWeek 메서드로 요일을 찾아 String 타입으로 변환해주면
XXXDAY 형식으로 반환해준다. 문제는 앞의 세자리만 반환하도록 substring