2016년 1월 1일은 금요일입니다. 2016년 a월 b일은 무슨 요일일까요? 두 수 a ,b를 입력받아 2016년 a월 b일이 무슨 요일인지 리턴하는 함수, solution을 완성하세요. 요일의 이름은 일요일부터 토요일까지 각각 SUN,MON,TUE,WED,THU,FRI,SAT
입니다. 예를 들어 a=5, b=24라면 5월 24일은 화요일이므로 문자열 "TUE"를 반환하세요.
되게 간단해보였는데 월마다 일수가 순서로 규칙적이지 않아 (31일, 30일, 29일,,,) 아이디어를 떠올리기가 어려웠다. 2016년 1월 1일이 금요일이어서 'FRI'를 시작으로 일주일을 리스트로 만들었고, 월마다 1일이 무슨요일인지 알기 위해 모든 요일을 더하였다. (mod 7 이용)
풀면서 논리는 맞는 것 같은데 너무 코드가 길어지고 if문이 많아져.. 불안했지만 진행했다. 런타임 에러가 나서 71점 정도가 나왔다.
def solution(a, b):
answer = ''
days = ['FRI','SAT','SUN','MON','TUE','WED','THU']
kind_31 = 31%7
kind_29 = 29%7
kind_30 = 30%7
# 1.1은 금요일, 2.1은 월요일,,
sum_days_1 = kind_31
sum_days_2 = (sum_days_1 + kind_29) % 7
sum_days_3 = (sum_days_2 + kind_31) % 7
sum_days_4 = (sum_days_3 + kind_30) % 7
sum_days_5 = (sum_days_4 + kind_31) % 7
sum_days_6 = (sum_days_5 + kind_30) % 7
sum_days_7 = (sum_days_6 + kind_31) % 7
sum_days_8 = (sum_days_7 + kind_31) % 7
sum_days_9 = (sum_days_8 + kind_30) % 7
sum_days_10 = (sum_days_9 + kind_31) % 7
sum_days_11 = (sum_days_10 + kind_30) % 7
# sum_days_12 = (sum_days_11 + kind_31) % 7
if a == 1:
answer = days[(b-1)%7]
elif a == 2:
answer = days[sum_days_1 + (b-1)%7]
elif a == 3:
answer = days[sum_days_2 + (b-1)%7]
elif a == 4:
answer = days[sum_days_3 + (b-1)%7]
elif a == 5:
answer = days[sum_days_4 + (b-1)%7]
elif a == 6:
answer = days[sum_days_5 + (b-1)%7]
elif a == 7:
answer = days[sum_days_6 + (b-1)%7]
elif a == 8:
answer = days[sum_days_7 + (b-1)%7]
elif a == 9:
answer = days[sum_days_8 + (b-1)%7]
elif a == 10:
answer = days[sum_days_9 + (b-1)%7]
elif a == 11:
answer = days[sum_days_10 + (b-1)%7]
elif a == 12:
answer = days[sum_days_11 + (b-1)%7]
return answer
if와 else if로 월을 비교할 때, days[]의 인덱스로 받아온 값을 연산해줄 때, mod 7을 해주지 않아 몇 가지 테스트케이스에서 런타임에러가 났다. 따라서 값을 더해주고 마지막에도 mod 7을 해주었더니 성공하였다.
def solution(a, b):
answer = ''
days = ['FRI','SAT','SUN','MON','TUE','WED','THU']
kind_31 = 31%7
kind_29 = 29%7
kind_30 = 30%7
# 1.1은 금요일, 2.1은 월요일,,
sum_days_1 = kind_31
sum_days_2 = (sum_days_1 + kind_29) % 7
sum_days_3 = (sum_days_2 + kind_31) % 7
sum_days_4 = (sum_days_3 + kind_30) % 7
sum_days_5 = (sum_days_4 + kind_31) % 7
sum_days_6 = (sum_days_5 + kind_30) % 7
sum_days_7 = (sum_days_6 + kind_31) % 7
sum_days_8 = (sum_days_7 + kind_31) % 7
sum_days_9 = (sum_days_8 + kind_30) % 7
sum_days_10 = (sum_days_9 + kind_31) % 7
sum_days_11 = (sum_days_10 + kind_30) % 7
# sum_days_12 = (sum_days_11 + kind_31) % 7
if a == 1:
answer = days[(b-1)%7]
elif a == 2:
i = (sum_days_1 + (b-1)%7) %7
answer = days[i]
elif a == 3:
i = (sum_days_2 + (b-1)%7) %7
answer = days[i]
elif a == 4:
i = (sum_days_3 + (b-1)%7) %7
answer = days[i]
elif a == 5:
i = (sum_days_4 + (b-1)%7) %7
answer = days[i]
elif a == 6:
i = (sum_days_5 + (b-1)%7) %7
answer = days[i]
elif a == 7:
i = (sum_days_6 + (b-1)%7) %7
answer = days[i]
elif a == 8:
i = (sum_days_7 + (b-1)%7) %7
answer = days[i]
elif a == 9:
i = (sum_days_8 + (b-1)%7) %7
answer = days[i]
elif a == 10:
i = (sum_days_9 + (b-1)%7) %7
answer = days[i]
elif a == 11:
i = (sum_days_10 + (b-1)%7) %7
answer = days[i]
elif a == 12:
i = (sum_days_11 + (b-1)%7) %7
answer = days[i]
return answer