devlog

[BOJ] 백준 1924 2007년 -java 본문

Algorithm/BOJ

[BOJ] 백준 1924 2007년 -java

bellaah 2018. 11. 23. 14:20

문제

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

문제:https://www.acmicpc.net/problem/1924

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
import java.util.Scanner;
 
public class Main {
    public static void main(String[] args) {
        Scanner in=new Scanner(System.in);
        int month=in.nextInt();
        int day=in.nextInt();
        int wholeday=0;
        String[] week= {"SUN","MON","TUE","WED","THU","FRI","SAT"};
        for(int i=1; i<month; i++) {
            if(i==2) {
                wholeday+=28;
            }
            else if(i==4||i==6||i==9||i==11) {
                wholeday+=30;
            }
            else {
                wholeday+=31;
            }    
        }
        wholeday+=day;
        System.out.print(week[(wholeday%7)]);
    }
}
cs


풀이

2017년 1월 1일은 월요일일 때 2일은 화요일,8일은 다시 월요일입니다.

1월 1일을 기준으로 7일마다 월요일이 반복되는데 월과 일이 주어지면 무슨요일인지 알기위해서는 1월 1일 기준으로 며칠이나 지났는지 계산해봐야 합니다.

따라서 사용자가 입력으로 3월14일을 주었으면 1월과 2월엔 며칠이 존재하는지 알아서 wholeday라는 변수에 날짜를 더해주고(1월은 31일,2월은 28일) 마지막으로 14를 더해주면 1월 1일로부터 며칠이 지났는지 알 수 있습니다.

그 다음 그 날짜를 7로 나눴을 때 나머지가 0이 나오면 일요일이고 1이 나오면 월요일... 이런식으로 출력할 수 있게 week배열의 wholeday를 7로 나눴을 때 나오는 나머지를 인덱스로 줘서 접근하여 출력합니다.



Comments