Java/Coding Test

2016년 문제 풀이

최고다최코딩 2023. 9. 28. 00:26
728x90

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