본문 바로가기
알고리즘/입출력

[java 백준] 브론즈 1/ 1924번 2007년

by Meaning_ 2021. 7. 20.
728x90
반응형

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

 

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

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 sc = new Scanner(System.in);
        int month = sc.nextInt();
        int day = sc.nextInt();
 
        int[] months = { 0312831303130313130313031 };
        String[] days = { "SUN""MON""TUE""WED""THU""FRI""SAT" };
 
        int total = 0;
        if ((month - 1>= 1) {
            for (int i = 1; i <= month - 1; i++) {
                total += months[i];
            }
        }
        total += day;
        System.out.println(days[total % 7]);
 
    }
 
}
cs

처음에는 월별로 메서드를 만드는 어마어마하게 비효율적인 코드를 썼는데, 물론 성공했지만, 답만 맞게 하는 건 아무 의미 없는 것 같아서 구글링 하다가

https://rightbellboy.tistory.com/27

 

[백준/BOJ] 1924번 2007년 (java)

백준 온라인 저지(BOJ) 1924번 2007년 https://www.acmicpc.net/problem/1924 * 사용언어 : java, 자바 1. 문제 2007년 x월 y일은 어떤 요일인지 출력 (월요일 MON, 화요일 TUE, ... 일요일 SUN) 2. 풀이 배열..

rightbellboy.tistory.com

이분 코드를 참고했다. 

1월 1일은 days[1] 이므로 MON이 출력되고,

3월 14일은 31+28+14=73인데 여기서 7로 나누면 나머지가 3이다. 그러므로 WEDr가 출력되는 것을 알 수 있다.

1월1일의 요일이 언제인지 확인하고 작성하면 어떤 윤년빼고는 다 가능하다.

 

글을 작성하는 시점인 2021년은 1월1일이 금요일이였다. 즉 나머지가 1이 되는게 금요일이라는 것이다.

 

 

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 sc = new Scanner(System.in);
        int month = sc.nextInt();
        int day = sc.nextInt();
 
        int[] months = { 0312831303130313130313031 };
        String[] days = { "THU""FRI""SAT""SUN""MON""TUE""WED" };
 
        int total = 0;
        if ((month - 1>= 1) {
            for (int i = 1; i <= month - 1; i++) {
                total += months[i];
            }
        }
        total += day;
        System.out.println(days[total % 7]);
 
    }
 
}
cs

2021년 7월 20일은 화요일로 정확하게 나온다. 

 

728x90
반응형

댓글