EXCELSIOR

[Level2] 2016년 (getDayName) 본문

Python/알고리즘_문제

[Level2] 2016년 (getDayName)

Excelsior-JH 2016. 11. 27. 19:31

1. 문제

2016년 1월 1일은 금요일입니다. 2016년 A월 B일은 무슨 요일일까요?

두 수 A,B를 입력받아 A월 B일이 무슨 요일인지 출력하는 getDayName 함수를 완성하세요. 

요일의 이름은 일요일부터 토요일까지 각각


SUN,MON,TUE,WED,THU,FRI,SAT


를 출력해주면 됩니다. 예를 들어 A=5, B=24가 입력된다면 5월 24일은 화요일이므로 TUE를 반환하면 됩니다.


2. 풀이

1) 내가 작성한 코드

datetime을 import하여 weekday() 함수를 사용하여 풀었다.

import datetime

def getDayName(a,b):
    answer = ['MON', 'TUE', 'WED', 'THU', 'FRI', 'SAT', 'SUN']

    num = datetime.date(2016,a,b).weekday()

    return answer[num]
 
#아래 코드는 테스트를 위한 출력 코드입니다.
print(getDayName(5,24))


2) 다른 풀이

2016년의 월별 일수를 나타내는 list를 만들고 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]

#아래 코드는 테스트를 위한 출력 코드입니다.
print(getDayName(5,24))


3. 알아둘 것

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


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


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

Comments