[LeetCode] Day of the Week

아르당·3일 전

LeetCode

목록 보기
249/254
post-thumbnail

문제를 이해하고 있다면 바로 풀이를 보면 됨
전체 코드로 바로 넘어가도 됨
마음대로 번역해서 오역이 있을 수 있음

Problem

날짜가 주어졌을 때, 해당 하는 요일을 반환해라.
입력값은 일, 월, 연도를 나타내는 세 개의 정수로 주어진다.
{"Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"} 값 중에 하나를 반환해라.

Example

#1
Input: day = 31, month = 8, year = 2019
Output: "Saturday"

#2
Input: day = 18, month = 7, year = 1999
Output: "Sunday"

#3
Input: day = 15, month = 8, year = 1993
Output: "Sunday"

Constraints

  • 주어진 날짜는 1971년과 2100년 사이의 유효한 날짜이다.

Solved

class Solution {
    public String dayOfTheWeek(int day, int month, int year) {
        String[] dayOfWeek = {"Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"};
        int[] dayOfMonth = {0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};

        if(leapYear(year)){
            dayOfMonth[2] = 29;
        }

        int dayOfYear = 4;

        for(int i = 1971; i < year; i++){
            if(leapYear(i)){
                dayOfYear += 366;
            }else{
                dayOfYear += 365;
            }
        }

        for(int i = 1; i < month; i++){
            dayOfYear += dayOfMonth[i];
        }

        dayOfYear += day;

        return dayOfWeek[dayOfYear % 7];
    }

    private boolean leapYear(int year){
        if((year % 4 == 0 && year % 100 != 0) || year % 400 == 0){
            return true;
        }

        return false;
    }
}
profile
내 마음대로 코드 작성하는 세상

0개의 댓글