내장함수 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]