[5/25] 2016년

이경준·2021년 5월 25일
0

코테

목록 보기
12/140
post-custom-banner

문제

내 코드

def solution(a, b):
    result = ''
    ssum = 0
    
    if (a == 1):
        ssum = b
    elif (a == 2):
        ssum = b + 31
    elif (a == 3):
        ssum = b + 31 + 29 
    elif (a == 4):
        ssum = b + 31 + 29 + 31
    elif (a == 5):
        ssum = b + 31 + 29 + 31 + 30
    elif (a == 6):
        ssum = b + 31 + 29 + 31 + 30 + 31
    elif (a == 7):
        ssum = b + 31 + 29 + 31 + 30 + 31 + 30
    elif (a == 8):
        ssum = b + 31 + 29 + 31 + 30 + 31 + 30 + 31
    elif (a == 9):
        ssum = b + 31 + 29 + 31 + 30 + 31 + 30 + 31 + 31
    elif (a == 10):
        ssum = b + 31 + 29 + 31 + 30 + 31 + 30 + 31 + 31 + 30
    elif (a == 11):
        ssum = b + 31 + 29 + 31 + 30 + 31 + 30 + 31 + 31 + 30 + 31
    elif (a == 12):
        ssum = b + 31 + 29 + 31 + 30 + 31 + 30 + 31 + 31 + 30 + 31 + 30

    if (ssum % 7 == 0):
        result = "THU"
    elif (ssum % 7 == 1):
        result = "FRI"
    elif (ssum % 7 == 2):
        result = "SAT"
    elif (ssum % 7 == 3):
        result = "SUN"
    elif (ssum % 7 == 4):
        result = "MON"
    elif (ssum % 7 == 5):
        result = "TUE"
    else:
        result = "WED"
    
    return result

풀이

  1. ssum이라는 변수를 선언해서, 누적 월/일을 더해준다.
  2. if 문을 사용해서, 전 월까지의 합과 일을 더해준다.
  3. 7로 나눈 나머지에 따라 요일을 반환한다.

효율적인 코드

def getDayName(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]

피드백

  • 다 더하는 것 말고 다른 방법이 있을줄 알았는데, 역시 있었다. 리스트를 만든 후 전 월까지 더해주면 된다.
  • 요일도 마찬가지.
  • 전 월까지만 더해준건 당 월은 아직 끝나지 않았기 때문
  • 일에서 1을 빼준건 days 인덱스는 0부터 시작하기 때문
profile
The Show Must Go On
post-custom-banner

0개의 댓글