[プログラマー]2016
1346 ワード
📌2016
2016年1月1日は金曜日です.2016年a月b日は何曜日ですか?2つの数a,bを入力し,2016年a月b日が曜日である関数を返し,解を完成する.日曜日の名前は日曜日から土曜日までSUN、MON、TUE、WED、THU、FRI、SATです.
📌せいげんじょうけん
📌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の余剰値で割って、週の配列から該当する週を抽出する.
Reference
この問題について([プログラマー]2016), 我々は、より多くの情報をここで見つけました https://velog.io/@qaer07/프로그래머스-2016テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol