[AlgorithmProblem]2016年


質問する


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日などの日付は提供されません)

コード#コード#

  • 複文
  • function solution(a, b) {
    	let weekDay = ["SUN","MON","TUE","WED","THU","FRI","SAT"];
    	let day = b;
    	let index = 4;
    	
    	for (let i = 1; i < a; i++) {
    		if (i === 2)
    			day += 29;
    		else if (i === 4 || i === 6 || i === 9 || i === 11)
    			day += 30;
    		else
    			day += 31;
    	}
            index = (index + day % 7) % 7;
    	return weekDay[index];
    }
    테스트 1 〉	통과 (0.07ms, 30.2MB)
    테스트 2 〉	통과 (0.05ms, 30.2MB)
    테스트 3 〉	통과 (0.06ms, 30.2MB)
    테스트 4 〉	통과 (0.07ms, 29.9MB)
    테스트 5 〉	통과 (0.05ms, 29.9MB)
    테스트 6 〉	통과 (0.05ms, 30.1MB)
    테스트 7 〉	통과 (0.07ms, 29.9MB)
    테스트 8 〉	통과 (0.07ms, 30.2MB)
    테스트 9 〉	통과 (0.06ms, 30.1MB)
    테스트 10 〉	통과 (0.06ms, 30MB)
    테스트 11 〉	통과 (0.05ms, 30.1MB)
    테스트 12 〉	통과 (0.07ms, 30.2MB)
    테스트 13 〉	통과 (0.05ms, 30MB)
    테스트 14 〉	통과 (0.06ms, 30.2MB)
  • メソッド呼び出し
  • function solution(a, b) {
       	let weekDay = ["SUN","MON","TUE","WED","THU","FRI","SAT"];
        let date = new Date(`2016-${a}-${b}`);
        
        return weekDay[date.getDay()];
    }
    테스트 1 〉	통과 (0.14ms, 30.6MB)
    테스트 2 〉	통과 (0.13ms, 30.4MB)
    테스트 3 〉	통과 (0.13ms, 30.4MB)
    테스트 4 〉	통과 (0.14ms, 30.1MB)
    테스트 5 〉	통과 (0.15ms, 30.7MB)
    테스트 6 〉	통과 (0.15ms, 30.3MB)
    테스트 7 〉	통과 (0.13ms, 30.6MB)
    테스트 8 〉	통과 (0.15ms, 30.4MB)
    테스트 9 〉	통과 (0.16ms, 30.6MB)
    테스트 10 〉	통과 (0.13ms, 30.6MB)
    테스트 11 〉	통과 (0.13ms, 30.5MB)
    테스트 12 〉	통과 (0.16ms, 30.5MB)
    테스트 13 〉	통과 (0.17ms, 30.6MB)
    테스트 14 〉	통과 (4.58ms, 30.3MB)

    に答える


    初期日を12月31日に設定し、受信日と差異を求め、%7演算子を使用して曜日索引を挿入します.
    あるいは
    Dateメソッドによる簡略化
    出典:プログラマーコードテスト練習、https://programmers.co.kr/learn/challenges