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" |
public class YearOf2016 {
// 두 정수를 매개변수로 하며, 문자열을 리턴값으로 하는 메소드 생성
public String solution(int a, int b) {
// 각 월의 총 일수를 객체로 하는 배열을 선언(2월은 윤년이므로 29일로 입력)
// 12월은 나중에 월의 총 일수를 합할 때 더해질 일이 없기 때문에 생략 가능
int[] month = { 31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30};
// 요일을 객체로 하는 배열을 선언
String[] day = { "SUN", "MON", "TUE", "WED", "THU", "FRI", "SAT" };
// 1월 1일이 금요일([5]번째 객체)이었기 때문에 5를 더한 값으로 초기화
int totalDays = 5;
// 월마다 총 일수를 더해줌
// 'month'는 [0]번째 부터 시작하기 때문에 1을 빼줘야 함
// 왜냐하면 1월의 총 일수(31일)는 1월 날짜를 계산 할 때는 더해지면 안되기 때문에
// 'int i = 1'로 선언하고 'month[i - 1]'로 입력
// 만약 'int i = 0'으로 선언하고 'month[i]'라고 입력하면
// 1월 날짜를 구할 때 31이 더해져서 원하는 값이 나오지 않음
for (int i = 1; i < a; i++) {
totalDays += month[i - 1];
}
// 1월 1일부터 시작했기 때문에 1을 차감
totalDays += b - 1;
// 'day'배열에서 총 일 수를 7로 나눈 값의 나머지 번째의 객체를 돌려줌
return day[(totalDays) % 7];
}
public static void main(String[] args) {
YearOf2016 yearof2016 = new YearOf2016();
int a1 = 1; int b1 = 1;
int a2 = 5; int b2 = 24;
System.out.println(yearof2016.solution(a1,b1)); // FRI 출력
System.out.println(yearof2016.solution(a2,b2)); // TUE 출력
}
}