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"
문제 풀이
우선 2016년 한정이라는 점이다. year을 받는 변수가 없다.
a는 월, b는 일 (실제로 있는 월일만 가능)
SimpleDateFormat에 넣기 전에 concat기능을 이용하여 연-월-일 순서로 String 만듦
Calendar로 계산하여 세팅하고, 해당 값을 주로 나눈다.
나눈 주 값을 일~토 순서대로 String 배열 안에 넣어준다.
넣어준 값을 answer에 넣어줄 때 String 배열 안에 있는 값을 가져올 때 주로 나눈 값에 -1을 하여 반환한다.
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
class Solution {
public static String solution(int a, int b) throws ParseException {
String answer = "";
String ss = "2016".concat("-").concat(String.valueOf(a)).concat("-").concat(String.valueOf(b));
String[] weekk = {"SUN","MON","TUE","WED","THU","FRI","SAT"};
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
Date nDate = dateFormat.parse(ss);
Calendar cal = Calendar.getInstance();
cal.setTime(nDate);
int dayNum = cal.get(Calendar.DAY_OF_WEEK);
answer = weekk[dayNum-1];
return answer;
}
}