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"를 반환하세요.
| a | b | result |
|---|---|---|
| 5 | 24 | "TUE" |
문제의 조건에 유의해서 풀어야하는 문제였다. 제한사항에 나와 있듯이 인덱스를 단어 기준으로 나누어주는 것을 염두해두고 문제를 풀었다.
1. 먼저 split을 이용하여 공백을 기준으로 문자열을 단어별로 나누어 주었다.
2. 각 단어에 다시 index를 부여해 해당 단어의 짝수번째는 대문자로, 홀수번째는 소문자로 만들어 forAnswer의 문자열에 저장해준다.
3. 저장한 문자열들을 list answer의 원소로 추가해준다.
4. 단어들의 사이에 공백을 추가하여 list를 join함수를 연결하여 원소끼리 연결하여 return 한다.
요일에 대한 정보를 day 라는 list에 담고 calendar 모듈의 .weekday를 이용하여 해당 날짜의 요일을 반환해 주었다.
하지만 이 코드는 런타임에러가 떴다😥
import calendar
def solution(a, b):
answer = ''
day = ['SUN','MON', 'TUE', 'WED', 'THU','FRI','SAT']
print(calendar.weekday(2016, a, b))
answer = day[(calendar.weekday(2016, a, b))+1]
return answer
day는 2016년을 기준으로 생각했기 때문에 1번째 index를 2016의 시작 요일인 금요일로 하고 0번째 index가 목요일부터 시작되는 list를 생성해주었고, month는 1월부터 각 월의 일수를 배열에 저장해 주었다.
그리고 입력받은 전달까지 (a-1) 의 날 수를 sum() 함수를 이용해 모두 더하고 날짜인 b를 더해 일주일인 7로 나눈 나머지의 index를 반환해 주었다.
def solution(a, b):
day = ["THU","FRI","SAT","SUN","MON","TUE","WED"]
month = [31, 29, 31, 30, 31, 30 , 31, 31, 30, 31, 30, 31]
return day[(sum(month[:a-1]) + b) % 7]