본문 바로가기
CS/알고리즘

백준 1924

by 데브겸 2023. 9. 25.

 

처음 푼 풀이

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))