티스토리 뷰

728x90
 

1924번: 2007년

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

www.acmicpc.net

 

문제

오늘은 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중 하나를 출력한다.

 

 

 

먼저 입력된 날짜가 총 며칠인지 계산한 후, 그 값을 7로 나눠서 나머지 값에 따른 각 요일을 출력한다. 예를 들어 3월 14일이 입력되었다면 3월 앞 월의 날짜를 모두 더한 후 3월의 날짜를 더하면 총 며칠인지 구할 수 있다. 1월 1일은 총 날짜가 1일이고, 1을 7로 나누면 나머지가 1, 1인 경우 MON이므로 week 배열의 인덱스 1에 MON이 와야 한다. 해당 방법으로 계산한다면 1월 1일이 월요일이 아니더라도 week 배열의 순서만 바꾸기만 하면 무슨 요일인지 구할 수 있다.

package baekjoon;
import java.util.*;
import java.io.*;

public class B_1924 {
	static int[] month = {31, 28, 31, 30, 31, 30, 31,
			31, 30, 31, 30, 31};
	static String[] week = {"SUN", "MON", "TUE", "WED", "THU", "FRI", "SAT"}; 
	public static void main(String[] args) throws IOException {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		StringTokenizer st = new StringTokenizer(br.readLine());
		int x = Integer.parseInt(st.nextToken());
		int y = Integer.parseInt(st.nextToken());
		whatDay(x, y);
	}
	static void whatDay(int m, int d) {
		int day = d;
		for(int i=0;i<m-1;i++) 
			day += month[i];
		System.out.println(week[day % 7]);
	}
}
728x90
250x250
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2025/02   »
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28
글 보관함