반응형
# Problem
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"를 반환하세요.
제한 조건
- 2016년은 윤년입니다.
- 2016년 a월 b일은 실제로 있는 날입니다. (13월 26일이나 2월 45일같은 날짜는 주어지지 않습니다)
입출력 예
a | b | result |
5 | 24 | "TUE" |
# My Answer
def solution(a, b):
answer = ''
month = [0,31,29,31,30,31,30,31,31,30,31,30,31]
day = ["SUN","MON","TUE","WED","THU","FRI","SAT"]
temp = (sum(month[:a])+b-1)%7
answer = day[(temp+5)%7]
return answer
month - 월별 날수
day - 요일명 리턴
입력 월 이전까지의 모든 날수를 더하고 입력 날짜의 (일수-1)까지 더하면 1월 1일부터 지난 날수를 계산할 수 있다.
1월1일이 금요일이므로 금요일은 day의 인덱스 5번이므로 5에 더한 날들을 7로 나누어 나온 요일(숫자)를 더하고 다시 7로 나눈 나머지가 해당 날짜의 요일 인덱스가 된다
day리스트를 금요일부터 시작하면 5를 더해주는 과정은 생략가능
반응형
'Algorithm > Programmers Lv.1' 카테고리의 다른 글
[Summer/Winter Coding(~2018)] 소수 만들기 (0) | 2021.06.07 |
---|---|
[2019 KAKAO BLIND RECRUITMENT] 실패율 (0) | 2021.06.07 |
[2021 Dev-Matching] 로또의 최고 순위와 최저 순위 (0) | 2021.06.05 |
[월간 코드 챌린지 시즌2] 약수의 개수와 덧셈 (0) | 2021.06.03 |
[월간 코드 챌린지 시즌2] 음양 더하기 (zip()함수) (0) | 2021.05.31 |