문제 설명
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" |
def solution(a, b):
days = ['THU', 'FRI', 'SAT','SUN', 'MON', 'TUE','WED']
months = [31,29,31,30,31,30, 31, 31, 30, 31, 30, 31]
return days[(sum(months[:a-1])+b)%7]
일단 윤년에 대해 알아야한다.
윤년은 4마다 주기적으로 돌아오고, 2월에 29일까지 존재하는 달이다.
그리고 요일은 1월 1일이 금요일이라고 했으니, days[1]
이면 금요일이 나오도록 요일 순서대로 배치한다.
그리고 months
는 1월 부터 12월까지의 일 수를 순차적으로 넣어준다.
입출력 예제처럼 5월 24일을 구한다면,
sum(months[:a-1])
로 4월까지의 모든 날짜를 더해준다.
sum(months[:a-1])+b
그리고 b (일에 해당) 를 더해준다.
(sum(months[:a-1])+b) % 7
그렇게 다 더해준 날들을 7로 나눈 나머지를 구해준다.
days[(sum(months[:a-1])+b) % 7]
알고 싶은 건 요일임으로 그렇게 다 더해준 날들을 7로 나눈 나머지에 해당하는 요일을 찾아준다.