본문 바로가기
알고리즘/연습문제

[프로그래머스] 2016년 - 파이썬

by 의탕 2020. 11. 22.

문제


 

 


문제설명


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

두 수 a ,b를 입력받아 2016년 a월 b일이 무슨 요일인지 리턴하는 함수, solution을 완성하세요.

요일의 이름은 일요일부터 토요일까지 각각 SUN,MON,TUE,WED,THU,FRI,SAT 입니다.

예를 들어 a=5, b=24라면 5월 24일은 화요일이므로 문자열 TUE를 반환하세요.

 

<제한 조건>

  • 2016년은 윤년입니다.
  • 2016년 a월 b일은 실제로 있는 날입니다. (13월 26일이나 2월 45일같은 날짜는 주어지지 않습니다)

<입출력 예>

 

a b result
5 24 TUE

 


접근


이 문제는 나머지 연산을 통해서 풀 수도 있지만, 날짜 모듈인 datetime를 이용하면 빠르게 풀 수 있다.

 

#1. datetime.date

이 클래스의 객체는 년월일 정보를 담고 있는 객체이다.

특정한 날짜의 객체를 만들려면 년, 월, 일을 전달해주면 되고, 오늘 날짜를 얻으려면 today() 를 이용한다.

>>> from datetime import date

>>> date(2019, 1, 31)

 

date.weekday() 는 요일 정보를 숫자로 반환해준다.

월요일이 0이고 순서대로 올라가 일요일이 6이다.

>>> from datetime import date

>>> date1 = date(2020, 1, 1)

>>> date1.weekday()

2 # 수요일

 

풀이


from datetime import date

def solution(a, b):
    dayOfTheWeek = ['MON','TUE','WED','THU','FRI','SAT','SUN']
    return dayOfTheWeek[date(2016, a, b).weekday()]

마침


질문은 언제나 환영입니다~

댓글