문제 설명
2016년 1월 1일은 금요일입니다. a/b/2016은 무슨 요일입니까? 2016년에 두 개의 숫자 a와 b를 받고 b월의 요일을 반환하는 함수를 완성하세요. 요일의 이름은 일요일부터 각각 SUN, MON, TUE, WED, THU, FRI, SAT입니다. 토요일에. 예를 들어 a=5, b=24는 5월 24일은 화요일이므로 문자열 “TUE”를 반환합니다.
제한
- 2016년은 윤년입니다.
- a/b/2016은 진짜 날입니다. (13/26 또는 2/45와 같은 날짜는 제공되지 않음)
I/O 예시
| ㅏ | 비 | 결과 |
| 5 | 24 | “화” |
import java.time.LocalDate;
import java.time.DayOfWeek;
class Solution {
public String solution(int a, int b) {
LocalDate date = LocalDate.of(2016, a, b);
DayOfWeek day = date.getDayOfWeek();
int dayNum = day.getValue();
String answer = "";
switch (dayNum) {
case 1: answer = "MON";
break;
case 2: answer = "TUE";
break;
case 3: answer = "WED";
break;
case 4: answer = "THU";
break;
case 5: answer = "FRI";
break;
case 6: answer = "SAT";
break;
case 7: answer = "SUN";
}
return answer;
}
}
월 a와 일 b를 받는 LocalDate를 만듭니다. getDayOfWeek() 메서드는 LocalDate 개체에서 DayOfWeek 열거형을 반환합니다. 열거형은 상수 상수 값을 갖는 데이터 유형입니다. 상수 이름은 상수 값과 동일한 이름으로 사용됩니다.
getValue 메소드로 찾았습니다. 요일을 숫자로 반환합니다. 월요일부터 일요일까지의 요일을 1부터 7까지의 값으로 표현하는 방식입니다. 이렇게 반환되는 숫자는 switch 문에 순차적으로 할당됩니다. switch 문은 해당 번호에 도달할 때까지 반복하다가 해당 번호를 찾으면 answer에 값을 대입하고 switch 문을 종료합니다.
import java.time.LocalDate;
import java.time.DayOfWeek;
class Solution {
public String solution(int a, int b) {
LocalDate date = LocalDate.of(2016, a, b);
DayOfWeek day = date.getDayOfWeek();
int dayNum = day.getValue();
String() num = {"MON", "TUE", "WED", "THU", "FRI", "SAT", "SUN"};
String answer = num(dayNum - 1);
return answer;
}
}
switch 문으로 해결했는데 어쩐지 아쉬운 부분이 있어서 배열과 인덱싱으로 해결했습니다. 배열 인덱스는 0부터 시작하므로 인덱싱할 때 1을 빼야 합니다.
