import calendar
thisdict = {
0 : "MON",
1 : "TUE",
2 : "WED",
3 : "THU",
4 : "FRI",
5 : "SAT",
6 : "SUN"
}
def solution(a, b):
return thisdict[calendar.weekday(2016, a, b)]
이제껏 코딩테스트 연습을 하면서 캘린더 를 써본적이 없었는데 이번 기회에 써보았다.
calendar.weekday는 숫자로 요일을 리턴해주어서 딕셔너리에 숫자로 key, 요일 이름으로 value를 설정해 주었다
def solution(a,b):
answer = ""
if a>=2:
b+=31
if a>=3:
b+=29#2월
if a>=4:
b+=31#3월
if a>=5:
b+=30#4월
if a>=6:
b+=31#5월
if a>=7:
b+=30#6월
if a>=8:
b+=31#7월
if a>=9:
b+=31#8월
if a>=10:
b+=30#9월
if a>=11:
b+=31#10월
if a==12:
b+=30#11월
b=b%7
if b==1:answer="FRI"
elif b==2:answer="SAT"
elif b==3:answer="SUN"
elif b==4:answer="MON"
elif b==5:answer="TUE"
elif b==6:answer="WED"
else:answer="THU"
return answer
클릭하자마자 대단한 풀이를 발견하였다.
길긴한데 빠르기도 함..ㅋㅋ 지역변수를 따로 설정해주지 않는데다가 리스트나 딕셔너리같은 object를 만들지도 않고~
a를 기준으로 b 에 달 마다 요일 수를 더해 줌
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']
return days[(sum(months[:a-1])+b-1)%7]
이런 방식으로는 생각을 못했는데 배워 두기 좋은 것 같다
a는 각 달의 요일 갯수를 저장한 리스트의 인덱스로 이용.
import calendar 수작업 리스트
테스트 1 〉 통과 (0.00ms, 10.5MB) 통과 (0.00ms, 10.4MB) 통과 (0.00ms, 10.1MB)
테스트 2 〉 통과 (0.00ms, 10.6MB) 통과 (0.00ms, 10.4MB) 통과 (0.00ms, 10.2MB)
테스트 3 〉 통과 (0.00ms, 10.5MB) 통과 (0.00ms, 10.2MB) 통과 (0.00ms, 10.3MB)
테스트 4 〉 통과 (0.01ms, 10.2MB) 통과 (0.00ms, 10.4MB) 통과 (0.00ms, 10.2MB)
테스트 5 〉 통과 (0.01ms, 10.6MB) 통과 (0.00ms, 10.4MB) 통과 (0.00ms, 10.4MB)
테스트 6 〉 통과 (0.00ms, 10.3MB) 통과 (0.00ms, 10.2MB) 통과 (0.00ms, 10.1MB)
테스트 7 〉 통과 (0.01ms, 10.4MB) 통과 (0.00ms, 10.4MB) 통과 (0.00ms, 10.3MB)
테스트 8 〉 통과 (0.01ms, 10.5MB) 통과 (0.00ms, 10.3MB) 통과 (0.00ms, 10.2MB)
테스트 9 〉 통과 (0.00ms, 10.3MB) 통과 (0.00ms, 10.2MB) 통과 (0.00ms, 10.3MB)
테스트 10 〉 통과 (0.01ms, 10.3MB) 통과 (0.00ms, 10.2MB) 통과 (0.00ms, 10.2MB)
테스트 11 〉 통과 (0.01ms, 10.5MB) 통과 (0.00ms, 10.2MB) 통과 (0.00ms, 10.3MB)
테스트 12 〉 통과 (0.00ms, 10.4MB) 통과 (0.00ms, 10.1MB) 통과 (0.01ms, 10.2MB)
테스트 13 〉 통과 (0.01ms, 10.5MB) 통과 (0.00ms, 10.4MB) 통과 (0.00ms, 10.1MB)
테스트 14 〉 통과 (0.01ms, 10.4MB) 통과 (0.00ms, 10.4MB) 통과 (0.00ms, 10.1MB)
가장 마지막 방법이 짧은 시간, 적은 메모리를 이용해 수행하였다. 👏