백준 1924

2019-02-04

1924번

2007년

시간 제한 메모리 제한 제출 정답 맞은 사람 정답 비율
2 초 128 MB 51738 21434 18470 43.303%

문제

오늘은 2007년 1월 1일 월요일이다. 그렇다면 2007년 x월 y일은 무슨 요일일까? 이를 알아내는 프로그램을 작성하시오.

입력

첫째 줄에 빈 칸을 사이에 두고 x(1≤x≤12)와 y(1≤y≤31)이 주어진다. 참고로 2007년에는 1, 3, 5, 7, 8, 10, 12월은 31일까지, 4, 6, 9, 11월은 30일까지, 2월은 28일까지 있다.

출력

첫째 줄에 x월 y일이 무슨 요일인지에 따라 SUN, MON, TUE, WED, THU, FRI, SAT중 하나를 출력한다.

예제 입력 1

1 1

예제 출력 1

MON

예제 입력 2

3 14

예제 출력 2

WED

예제 입력 3

9 2

예제 출력 3

SUN

예제 입력 4

12 25

예제 출력 4

TUE

정답

package baekjoon;

import java.util.Scanner;

public class Problem1924 {
	
	//1, 3, 5, 7, 8, 10, 12월은 31일까지
	//, 4, 6, 9, 11월은 30일까지, 2월은 28일까지 있다.
	public static void main(String[] args) {
		String[] Days = {"SUN","MON","TUE","WED","THU","FRI","SAT"};
		Scanner s = new Scanner(System.in);
		
		String[] input = s.nextLine().split(" ");
		
		int mon = Integer.parseInt(input[0]);
		int day = Integer.parseInt(input[1]);
		int result = 0;
		
		for(int i=1; i<=mon; i++) {
			// 만약 1월 25일이면 25만 계산 .
			if(mon == i) {
				result += day;
				break;
			}
			if(String.valueOf(i).matches("1|3|5|7|8|10|12")) {
				result += 31;
			} else if(String.valueOf(i).matches("4|6|9|11")) {
				result += 30;
			} else {
				result += 28;
			}
		}
		System.out.println(Days[(result%Days.length)]);
	}
}

그냥 문제흐름대로 작성해서 그렇게 어렵진 않았지만, 이걸 더 간단히 만들고 싶었는데 마땅히 생각이 나지 않았다. 규칙이 있는 것도아니고, 있더라도 그렇게짜면 손해일것 같앗다.