[백준-자바] N_1924 2007년

0woy·2024년 1월 6일
0

코딩테스트

목록 보기
5/39
post-custom-banner

📜 문제

  • 오늘은 2007년 1월 1일 월요일
  • 입력한 날짜의 요일 찾기

✍ 부분 코드 설명

     public static void main(String[]args) throws IOException{
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        StringTokenizer st = new StringTokenizer(br.readLine()," ");
        String [] week =new String[]{"SUN","MON","TUE","WED","THU","FRI","SAT"};

        int month = Integer.parseInt(st.nextToken());
        int day = Integer.parseInt(st.nextToken());
         ...

- 입력한 날짜를 month, day 변수에 저장한다.
- 요일을 저장한 week 배열을 선언 및 초기화한다.


1월 1일부터 입력한 날짜까지의 일수 계산

    int totalDays=0;
        for(int i=1;i<month;i++){
            switch (i){
                case 2:
                    totalDays+=28;
                    break;
                case 1:
                case 3:
                case 5:
                case 7:
                case 8:
                case 10:
                case 12:
                    totalDays+=31;
                    break;
                case 4:
                case 6:
                case 9:
                case 11:
                    totalDays+=30;
                    break;
            }
        }
          totalDays+=day;
        System.out.println(week[totalDays%7]);

문제에서 각 월마다의 일수를 아래와 같이 명시했다.

일수
1, 3, 5, 7, 8, 10, 12 월31일
4, 6, 9, 11 월30일
2 월28일

따라서 입력한 월까지의 일수를 더한 후, day를 더하면 1월1일 부터 입력한 날짜까지의 일수가 된다.

week 배열에서 해당 일수(totalDays)를 7로 나눈 나머지 값을 인덱스로 하면 요일이 나온다.

예시) 9월 2일 입력
i=1, 2, ... , 8 → totalDays = 31+28+31+30+31+30+31+31 = 243
totalDays+day = 243+2 = 245
totalDays % 7 = 0 이므로 week[0] = SUN


🍳 전체 소스 코드


package SWM;

import java.io.*;
import java.util.StringTokenizer;

public class N_1924 {
    public static void main(String[]args) throws IOException{
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        StringTokenizer st = new StringTokenizer(br.readLine()," ");
        String [] week =new String[]{"SUN","MON","TUE","WED","THU","FRI","SAT"};

        int month = Integer.parseInt(st.nextToken());
        int day = Integer.parseInt(st.nextToken());
        int totalDays=0;
        for(int i=1;i<month;i++){
            switch (i){
                case 2:
                    totalDays+=28;
                    break;
                case 1:
                case 3:
                case 5:
                case 7:
                case 8:
                case 10:
                case 12:
                    totalDays+=31;
                    break;
                case 4:
                case 6:
                case 9:
                case 11:
                    totalDays+=30;
                    break;
            }
        }

        totalDays+=day;
        System.out.println(week[totalDays%7]);

    }
}

✨ 결과

날짜 관련 문제가 나오면 전체 일수를 구해서 계산하는 방식을 떠올리게 됐다..
이 문제를 더 꼬면 윤년을 포함하여 년도도 입력받아서 요일을 구하는 문제가 나올 수도 있겠다 . .

post-custom-banner

0개의 댓글