알고리즘(Algorithm)/프로그래머스(Programmers)

[프로그래머스] 2016년 - JAVA

나아가는중 2021. 10. 25. 17:09
반응형

프로그래머스 2016년 - JAVA


문제 설명

  1. 2016년 1월 1일은 금요일이다.
  2. 두 수 a, b를 입력받아 2016년 a월 b일이 무슨 요일인지 리턴.
  3. 요일의 이름은 일요일부터 토요일까지 각각 SUN,MON,TUE,WED,THU,FRI,SAT 이다.

제한 사항

  1. 2016년은 윤년입니다.
  2. 2016년 a월 b일은 실제로 있는 날입니다. (13월 26일이나 2월 45일같은 날짜는 주어지지 않습니다)

문제풀이

  1. 1월 1일이 금요일 이므로, 금요일부터 시작하여 요일 이름을 저장.
  2. 모든 날짜를 더해 % 7로 나눠준다.
    • 배열은 0부터 시작이므로 a - 1까지 모든 월의 일수를 더한다.
    • b - 1을 더함으로 1월 1일부터 a월 b일까지 모든 날짜를 더한 값을 얻는다.

소스 코드

class Solution {
    public String solution(int a, int b) {
        String[] day = {"FRI", "SAT", "SUN", "MON", "TUE", "WED", "THU"};
        int[] month = {31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};        

        int date = 0;
        for (int i = 0; i < a - 1; i++) {
            date += month[i];
        }

        date += b - 1;

        return day[date % 7];
    }
}
반응형