プログラマー(Level 1-21)2016

4621 ワード

問題の説明:
2016年1月1日は金曜日です.2016年a月b日は何曜日ですか?2つの数a,bを入力し,2016年a月b日が曜日である関数を返し,解を完成する.日曜日の名称は日曜日から土曜日までSUN、MON、TUE、WED、THU、FRI、SAT
.たとえば、a=5、b=24の場合は、5月24日が火曜日であるため、文字列「TUE」を返します.
せいげんじょうけん
2016年は閏年です.
2016年a月b日は実在の日です(13月26日または2月45日などの日付は提供されません)
I/O例
a b result
5 24 "TUE"
実装コード:
class Solution {
    public String solution(int a, int b) {
        String[] week ={"SUN","MON","TUE","WED","THU","FRI","SAT"};
        int[] month={31,29,31,30,31,30,31,31,30,31,30,31};
        int day=0;
        for(int i=1;i<a;i++){
            day+=month[i-1];
        }
        day+=b-1;
        return week[(day+5)%7];
    }
}
コードの説明:
うるう年とは、2月にもう1日ある年のこと.つまり2月は29日までの1年です
番外を救うために閏年かどうか.
if((year%4==0&&year%!=100)||year%400==0)
このように手に入れることができます.
今コードに戻って、日付全体を-1に加算するのは1からで、day+5は1月1日が金曜日だからです.