[백준] 1924: 2007년 - JAVA, 자바

xxx-sj·2023년 8월 29일
1

알고리즘

목록 보기
3/46

이 문제에서는 요일에 대한 배열을 만들고, 또 다른 하나는 달에 대한 일수 배열을 만든다.
다음 입력받는 월, 일에 대해 월 이전의 일 수와 입력받은 일을 더해 7로 나눈 값을 배열 index를 통해 찾는다.

여기서 말하는 월 이전의 일 수란 예를들어, 2월을 입력받았다면 1월의 일수를 더하는 것이다.
입력: 2월11일 => 31일 + 11일 => 42일 (1월의 일 수는 31일이다.)

전체코드

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;

public class Main {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        String[] days = {"SUN", "MON", "TUE", "WED", "THU", "FRI", "SAT"};
        int[] months = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};

        StringTokenizer st = new StringTokenizer(br.readLine(), " ");
        int month = Integer.parseInt(st.nextToken());
        int day = Integer.parseInt(st.nextToken());

        int result = day;
        for(int i = 0; i < month - 1; i++) {
            result += months[i];
        }

        System.out.println(days[result % 7]);
    }
}

코드에 대한 설명

  • 월,일을 입력받고 2개의 배열을 만든다.
    • 하나의 배열은 요일에 대한 배열이고
    • 다른 하나는 1~12월에 해당하는 일 수 배열을 만든다.
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String[] days = {"SUN", "MON", "TUE", "WED", "THU", "FRI", "SAT"};
int[] months = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};

StringTokenizer st = new StringTokenizer(br.readLine(), " ");
int month = Integer.parseInt(st.nextToken());
int day = Integer.parseInt(st.nextToken());
  • 입력받은 달과 일 수를 더한다.
  • 이 때는 month - 1 까지 순회한다.
    • 예를 들어 2월1일을 입력받았을 때
    • 1월에 해당하는 요일만 더해야 하기 때문에 -1를 해준다.
int result = day;
for(int i = 0; i < month - 1; i++) {
    result += months[i];
}
  • 마지막으로 다 더한 요일을 7로 나누어 나머지에 해당하는 배열값을 출력한다.
System.out.println(days[result % 7]);
profile
틀려도 일단 기록하자

0개의 댓글