Algorithm/백준(BOJ)

[JAVA] 1924 - 2007년

Gr00t 2021. 1. 15. 01:06

문제

오늘은 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로 나누는 식으로 풀었겠지만, JAVA를 배우는 입장이라 내장 모듈을 배우고 싶어 날짜와 관련된 모듈을 사용해 풀었다.

    덕분에 시간과 메모리는 좀 많이 쓰는 코드이다 😂

  • 요일은 Calendar클래스의 DAY_OF_WEEK변수를 통해 얻을 수 있다.
  • 하지만 Calendar클래스에 원하는 날짜를 입력하려면 Date객체로 시간을 설정해야한다.
  • Date 클래스는 시간 초를 인자로 받아 객체를 생성한다.

    오늘은 곧 사라질 생성자를 통해 편하게 입력했다. ㅎㅎ..

  • 이제 Calendar클래스의 setTime함수에 Date객체를 인자로 주어 시간을 설정한다.
  • Calendar.get함수를 통해 요일에 대한 인덱스를 받아온다.
  • 미리 정의해둔 요일 배열에서 인덱스로 요일을 출력한다.
  • 끝!

import java.util.Calendar;
import java.util.Date;
import java.util.Scanner;

public class Two00seven {
    public static void main(String[] args){
        String[] day = new String[]{"SUN", "MON", "TUE", "WED", "THU", "FRI", "SAT"};
        Scanner scanner = new Scanner(System.in);
        int month = scanner.nextInt();
        int date = scanner.nextInt();
        Date when = new Date(107, month-1, date);
        Calendar calendar = Calendar.getInstance();
        calendar.setTime(when);
        System.out.println(day[calendar.get(calendar.DAY_OF_WEEK)-1]);
    }
}

서버에 제출할 경우, 클래스 명을 "Main"으로 바꿔야한다.

'Algorithm > 백준(BOJ)' 카테고리의 다른 글

[Python] 2475 - 검증수  (0) 2021.01.16
[Python] 2920 - 음계  (0) 2021.01.16
[JAVA] 2739 - 구구단  (0) 2021.01.14
[Python] 1744 - 수 묶기  (0) 2021.01.14
[JAVA] 2742 - 기찍 N  (0) 2021.01.13