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"를 반환하세요.
주어진 int 를 정수로 바꾸어 한 자릿수 밖에 없다면 앞에 “0” 을 붙여주어 두 자리로 만을어 주었다.
그 다음 Local date 로 변환해 해당 날짜에 해당하는 요일을 int 로 추출했고,
배열에서 번호에 맞는 요일을 꺼냈다.
import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
class Solution {
public String solution(int a, int b) {
String answer = "";
String[] week = {"MON", "TUE", "WED", "THU", "FRI", "SAT", "SUN"};
String aa = String.valueOf(a);
String bb = String.valueOf(b);
if (aa.length() < 2) aa = "0" + aa;
if (bb.length() < 2) bb = "0" + bb;
DateTimeFormatter format = DateTimeFormatter.ofPattern("yyyyMMdd");
int value = LocalDate.parse("2016" + aa + bb, format).getDayOfWeek().getValue();
answer = week[value - 1];
return answer;
}
}
코드를 보자마자 아차 싶었다.
나는 변수 값을 String 으로 변환해 DateTimeFormatter 을 사용해 문제를 해결했지만 이 코드에선 int 매개변수를 변환 없이 그대로 사용했다.
import java.time.*;
class Solution {
public String solution(int a, int b) {
return LocalDate.of(2016, a, b)
.getDayOfWeek().toString().substring(0,3);
}
}