최대 1 분 소요

문제 링크

내 풀이

from collections import deque

def solution(a, b):
    day = 0
    yo = deque(['SUN', 'MON', 'TUE', 'WED', 'THU', 'FRI', 'SAT'])
    month ={1:31, 2:29, 3:31, 4: 30, 5: 31, 6:30, 7:31, 8:31,9:30, 
           10:31, 11:30, 12:31}
    if a > 1:
        for i in range(1,a):
            day += month[i]
        day = day + b - 1
    else:
        day = b - 1
    num = day % 7
    fri_index = yo.index('FRI')
    yo.rotate(-num)
    
    return yo[fri_index]

다른 풀이

def getDayName(a,b):
    month = [31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]
    day = ['FRI', 'SAT', 'SUN', 'MON', 'TUE', 'WED', 'THU']
    return day[(sum(month[:a-1])+b-1)%7]

풀이 해석

배열의 [:]를 이용하여 slicing 한 다음 그 해당부분의 합을 구하고 b-1을 더한 후 7로 나눈 나머지를 index로 한 요일을 구하였다. index 0부분을 ‘FRI’로 설정하여 인덱스값에 따라 적절히 요일이 변하게 코드를 짰다.

배울 점

  • 배열을 slicing 하여 합을 구한 사고
  • 바로 나머지를 index로 활용하여 요일을 도출해 내는 사고

댓글남기기