내장함수 datetime 을 이용한 편리한 풀이

import datetime

def getDay(a,b):
	days = 'MON TUE WED THU FRI SAT SUN'split()
    dayIndex = datetime.datetime(2016,a,b).weekday()
    return days[dayIndex]

나의 풀이

def solution(a, b):
    answer = ''

    # 각 월에 해당하는 일수를 반환하는 함수
    def getDays(month):
        if month == 2:
            return 29
        elif month <= 7:
            if month%2 == 1:
                return 31
            else:
                return 30
        else:
            if month%2==1:
                return 30
            else:
                return 31

    # 전체 일수(1월 ~ a월 b일)를 더하기 위한 변수 초기화
    days=0

    # 반복문을 돌려 1월 1일 ~ (a-1)월 까지의 총 일수 계산
    for i in range(a-1):
        days += getDays(i+1)
	
    # b일을 더해서 a월 b일까지 총 몇일인지 계산
    days = days+b 
    
    day ='SUN,MON,TUE,WED,THU,FRI,SAT'.split(',')

    index = days % 7 - 3 # -는 걱정할 필요 없음! (원하는대로 작동)

    answer  = day[index]

    return answer

이런 답안도 있었다. sum() 이 뭔지 몰랐는데 배웠다!

참고로 sum()은 list, tuple, dict 등 iterable 들의 element가 모두 숫자일 때 해당 element 들을 모두 더한 합을 리턴한다.


def solution(a,b):
  months = [31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]
  days = ['FRI', 'SAT', 'SUN', 'MON', 'TUE', 'WED', 'THU']

  number_of_days = sum(months[:a-1]) # a-1 전까지의 합

  # 오 매우 쉽게해결했네

  number_of_days += (b-1) # '-1' 을 하는 이유는 1월1일을 빼기 때문인가?

  return days[number_of_days % 7]
profile
Frontend Developer, JamStack, Ethereum

0개의 댓글