[Java] 백준 1924번 : 2007년 / 코드O

노현아·2024년 3월 27일
import java.util.Scanner;

public class Main {
    public static void main(String[] args) throws IllegalArgumentException {
        Scanner sc = new Scanner(System.in);
        int month = sc.nextInt();
        int day = sc.nextInt();
        String[] week = {"MON", "TUE", "WED", "THU", "FRI", "SAT", "SUN"};
        int[] daysInMonth = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
        if (day > daysInMonth[month - 1]) {
            throw new IllegalArgumentException();
        }
        int prevMonth = month - 1;
        for (int i = 0; i < prevMonth; i ++) {
            day += daysInMonth[i];
        }
        System.out.print(week[(day-1)%7]);
    }
}

/**
[기준] 1월 1일 월요일(week[0])
기준 1일 뒤 : 1월 2일 화요일(week[1])
기준 9일 뒤 : 1월 10일 수요일(week[9 % 7])
기준 x일 뒤 : week[x % 7]
M월 D일의 요일은 week[D - 1 % 7]
1년 중 특정 달의 날 수를 array에 저장 : daysInMonth
현재 확인하는 날의 전 달 : prevMonth
daysInMonth에서 0 ~ prevMonth-1까지 순회하며 값을 모두 더한 값에
거기에 현재 달의 날짜 day를 더하면
1월 1일로부터 몇 일이 지났는지 알 수 있다.
만약 day가 daysInMonth[month - 1] 보다 크면 exception throw
(잘못된 날짜가 입력으로 들어올 경우)
**/
profile
성실함과 끊임없는 학습을 통해 성장하는 개발자 지망생입니다. 새로운 도전과 배움을 즐기며 더 나은 코드를 꿈꿉니다.

0개의 댓글