[プログラマー]2016年


https://programmers.co.kr/learn/courses/30/lessons/12901#

問題の説明


2016年1月1日は金曜日です.2016年a月b日は何曜日ですか?2つの数a,bを入力し,2016年a月b日が曜日である関数を返し,解を完成する.日曜日の名前は日曜日から土曜日までです.
.たとえば、a=5、b=24の場合は、5月24日が火曜日であるため、文字列「TUE」を返します.

せいげんじょうけん

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


    abresult524"TUE"

    に答える

    def solution(a, b):
        answer = ''
        weekend = ['SUN', 'MON', 'TUE', 'WED', 'THU', 'FRI', 'SAT']
        days = 4 # 1/1일이 금요일
        
        # a월 전달까지의 일수를 먼저 계산
        for i in range(a):
            if i == 0:
                pass
            elif i == 2:
                days += 29
            elif i < 8: # 7월까지
                if i % 2 == 0:
                    days += 30
                else:
                    days += 31
            else:
                if i % 2 == 0:
                    days += 31
                else:
                    days += 30
        
        days += b # 현재 달의 해당 일수 더하기
        answer = weekend[days % 7]
        
        return answer
  • a月の前月までに日数を計算し、bを加算して総数を計算し、72016年1月1日で割ると金曜日なので、金曜日インデックス5を加算して
  • を出力します.
  • 12016年は閏月なので、2月に29、7月と8月31日を加算しますので、8月を起点に日加算日数を変更し、
  • を再計算します

    整理する

  • 最も面白いなぞなぞはすべての月の条件を書くことで、12中if門を使って華為芸術の答えを昇華します...
  • 月の日数に基づいてリストを生成し,その月までにインデックスを作成する方法が最も簡潔であると考える.