문제
내가 푼 풀이
def solution(a, b):
month = a
day = b
day_hap = 0
calendar = {
1: 31,
2: 29,
3: 31,
4: 30,
5: 31,
6: 30,
7: 31,
8: 31,
9: 30,
10: 31,
11: 30,
12: 31
}
day_of_the_week = {
0: "FRI",
1: "SAT",
2: "SUN",
3: "MON",
4: "TUE",
5: "WED",
6: "THU"
}
if month == 1:
if day % 7 == 0:
day = 6
else:
day = day % 7 - 1
return day_of_the_week[day]
else:
for i in range(1,month):
day_hap += calendar[i]
day_hap += day
if day_hap % 7 == 0:
day_hap = 6
else:
day_hap = day_hap % 7 - 1
return day_of_the_week[day_hap]
✔ 처음에는 day_of_the_week의 인덱스를 1~7로 줬다.그랬더니 테스트케이스 9, 13번에서 오류가 떴다. 나머지가 0일 때를 고려해주지 않아서 오류가 뜬 것이었다..ㅋㅋㅋㅋ바본가..!!
그래서 0~7로 바꾸어줬더니 이번엔 테이스케이스 1, 2번에서 오류가 발생했다. 테이스케이스를 이것 저것 추가해보다가 1월에서는 day로 해줘야하는데 day_hap으로 계산해서 발생한 문제였다. else문에서 복붙했더니..😂
그렇게 잘 짠 코드는 아닌 것 같다..ㅠ어떻게 하면 더 효율적으로 코드를 짤 수 있는지 더 공부해야겠다..
좋아요가 가장 많았던 풀이
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]
후후 나는 45줄에 걸쳐서 작성했는데...😭
기본적으로 풀이방식은 비슷하다!!
나도 굳이 day_of_week를 dictionary로 작성할 필요없이 배열로 했어도 됐겠다라는 생각이 들었고, 나는 굳이 1월일 경우를 조건문으로 구분해줬는데 months[:a-1]로 했으면 조건문을 안써도 된다는 사실을 알았다...이 생각을 왜 못했을까..!
그리고 나머지에서 1을 빼는 게 아니라 day에서 1을 빼주고 나머지를 구하면 조건문을 안써도 됐었다는게,,!!후,,열심히 하자,,