문제 설명
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일같은 날짜는 주어지지 않습니다.)
입출력 예
제출 코드
import datetime
def solution(a, b):
d = datetime.datetime(2016, a, b)
weekdays = {'Sunday':'SUN', 'Monday':'MON', 'Tuesday':'TUE', 'Wednesday':'WED',
'Thursday':'THU', 'Friday':'FRI', 'Saturday':'SAT'}
answer = d.strftime('%A')
return weekdays.get(answer)
문제를 푸는 데에 중요한 개념은 다음과 같다.
1. python 모듈 'datetime'을 활용할 수 있는가?
2. 클래스 datetime의 메서드 strftime를 쓰면 요일이 'Sunday'와 같은 식으로 반환되는데, 그것을 원하는 결과값 'SUN'처럼 바꿀 수 있는가?
사실 2번 개념은 리스트를 써서 weekdays = ['SUN', 'MON', 'TUE', 'WED', 'THU', 'FRI', 'SAT'] 와 같은 식으로 만들어 두고, if-elif구문을 무식하게 이용해도 된다. 그렇게 해도 원하는 결과값은 정상적으로 반환되기 때문에 틀린 코드가 전혀 아니다. 이건 그렇게 크게 중요한 내용은 아니라고 생각된다.
중요한 것은 1번 개념이다. 날짜와 관련된 문제는 datetime 모듈을 이용하면 간단하게 풀 수 있기 때문에 미리 익혀두면 상당히 유용하다. 다만, 공식 document에는 너무나도 방대한 내용이 있어서 평생 써보지도 않을 기능까지 불필요하게 볼 수도 있으니 구글링을 하며 나에게 필요한 기능들을 찾고 잘 정리해놓을 필요가 있겠다. 추후에 datetime 모듈과 관련하여 포스팅해보겠다.
datetime 모듈과 관련된 공식 document 내용은 여기에 있으며, datetime 모듈 안에 있는 datetime 클래스에 관련된 공식 document는 여기, datetime 클래스 내에 있는 메서드 strftime( ) 및 strftime( )의 포맷 코드와 관련된 공식 document는 여기에 있다.
Source : https://programmers.co.kr/learn/courses/30/lessons/12901
'PS > 프로그래머스' 카테고리의 다른 글
[프로그래머스][파이썬/Python] 쇠막대기 (0) | 2020.03.05 |
---|---|
[프로그래머스][파이썬/Python] (2018 카카오 코딩테스트) 비밀지도 (0) | 2020.03.04 |
[프로그래머스][파이썬/Python] x만큼 간격이 있는 n개의 숫자 (0) | 2020.02.19 |
[프로그래머스][파이썬/Python] 문자열을 정수로 바꾸기 (0) | 2020.02.18 |
[프로그래머스][파이썬/Python] 두 정수 사이의 합 (0) | 2020.02.18 |