처음 푼 풀이
if elif else로 무식하게 조건을 걸었다
m, d = map(int, input().split())
def day_cal(total_date):
tmp = total_date % 7
if tmp == 1:
return 'MON'
elif tmp == 2:
return 'TUE'
elif tmp == 3:
return 'WED'
elif tmp == 4:
return 'THU'
elif tmp == 5:
return 'FRI'
elif tmp == 6:
return 'SAT'
else:
return 'SUN'
day_list = [0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30]
total_date = 0 + d
for i in range(m):
total_date += day_list[i]
print(day_cal(total_date))
조금 더 개선한 풀이
나눗셈하여 얻은 나머지를 인덱스로 생각해보면 좀 더 깔끔하게 정리가 가능하다
m, d = map(int, input().split())
def day_cal(total_date):
idx = total_date % 7
answer_list = ["SUN", "MON", "TUE", "WED", "THU", "FRI", "SAT"]
return answer_list[idx]
day_list = [0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30]
total_date = 0 + d
for i in range(m):
total_date += day_list[i]
print(day_cal(total_date))
calendar라는 모듈이 있긴 한데, 시간과 메모리적인 부분에서 위에 풀이보다 많이 잡아먹어서 좋은지는 잘... 그리고 문제 조건이 실제 정확한 리얼월드의 그 요일을 전제해야만 사용할 수 있을 것 같다. 위에서부터 성공 기준 calendar 사용, 조금 더 개선한 풀이, 처음 풀이
import calendar
m, d = map(int, input().split())
def day_cal(m, d):
idx = calendar.weekday(2007, m, d)
answer_list = ["MON", "TUE", "WED", "THU", "FRI", "SAT", "SUN"]
return answer_list[idx]
print(day_cal(m, d))
'CS > 알고리즘' 카테고리의 다른 글
코드업 파이썬 100제 - 6027, 6028, 6029, 6030, 6031 (0) | 2023.09.25 |
---|---|
백준 11721, 2742 (0) | 2023.09.22 |
백준 11719 & 11720 (0) | 2023.09.21 |
백준 11718 - input(), sys.stdin.readline(), sys.stdin.readlines() (0) | 2023.09.20 |
백준 10951, 10952 (python) (1) | 2023.09.19 |