을왕라 2020. 9. 1. 15:48

1. 문제

2016년이라는 년도를 주고 요일을 구하라는 문제다.

윤년이라고 친절하게 알려주었기 때문에 어렵지 않았다.

 

2. 풀이

내 풀이

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

사실 처음엔 month의 요소들도 if문으로 구하려고 하였지만 너무 어렵게 푸는 느낌?

그래서 day와 month를 리스트로 넣고 (튜플로 하면 더 좋을듯?)

a-1까지의 일수를 더하고 

b를 더한 뒤

7로 나눈 나머지 값에 -3 or +4를 하여 

day에서 요소를 리턴한다. 

 

다른사람 풀이

import datetime

def getDayName(a,b):
    t = 'MON TUE WED THU FRI SAT SUN'.split()
    return t[datetime.datetime(2016, a, b).weekday()]

datetime이라는 함수를 가지고 ez하게 풀어냈다... 하긴 있으면 써야지

 

3. 배운 점

 

import datetime

 

1) datetime.date : 일반적인 날짜에 대한 클래스이며(Gregorian calendar 표시) 속성으로 year, month, day를 가진다.

 

2) date.weekday( ) : 월요일(0) 부터 일요일(6)까지 표시

 

3) date.isoweekday( ) : 월요일(1) 부터 일요일(7)까지 표시