[プログラマー]2016


📌2016


2016年1月1日は金曜日です.2016年a月b日は何曜日ですか?2つの数a,bを入力し,2016年a月b日が曜日である関数を返し,解を完成する.日曜日の名前は日曜日から土曜日までSUN、MON、TUE、WED、THU、FRI、SATです.

📌せいげんじょうけん

  • 12016年は閏年です.
  • 12016年a月b日は実在の日である.(13月26日または2月45日などの日付は提供しません)
  • 📌I/O例


    abresult524"TUE"

    📌言語:JAVA


    📌solution

    class Solution {
        String[] weeks = { "FRI","SAT","SUN","MON","TUE","WED","THU"};
    	int[] month = { 31,29,31,30,31,30,31,31,30,31,30,31 };
    	
    	public String solution(int a, int b) {
            String answer = "";
            	
            int day = 0;
            	
            for (int i = 0; i <(a-1); i++) {
            		day += month[i];
            }
            day += (b-1);
            day %= 7;
            answer = weeks[day];
    
            return answer;
        }
    }

    😎に答える


    まず
    月順に1月2月3月...毎月の日数を順番に入力します.
    週ごとに並べて、1月1日は金曜日で、金曜日から木曜日まで順番に曜日を入力します.
    私は毎月の日数を合わせて、月曜日に問題に近づきます.
    条件事項では2016年が閏年、2月29日が月[1]が29となっている.
    aの値が5の場合、forゲート内部は0、1、2、3まで4回繰り返される.
    1月、2月、3月、4月の日数を加算する過程です.
    さらにbの値24を加えて1の値23を減算する.なぜ1を外したのでしょうか?この計算式で5月1日からなので、完全に24を足すと計算結果は5月25日の曜日になるので1を外します.
    このようにして求めた数字を7の余剰値で割って、週の配列から該当する週を抽出する.