알고리즘

[프로그래머스 lv 1] 2016년.py

파뱁 2022. 2. 2. 22:00
728x90

<문제 설명>

https://programmers.co.kr/learn/courses/30/lessons/12901

 

코딩테스트 연습 - 2016년

2016년 1월 1일은 금요일입니다. 2016년 a월 b일은 무슨 요일일까요? 두 수 a ,b를 입력받아 2016년 a월 b일이 무슨 요일인지 리턴하는 함수, solution을 완성하세요. 요일의 이름은 일요일부터 토요일까

programmers.co.kr

2016년 1월 1일은 금요일이라는 정보를 바탕으로 2016년의 특정 날짜의 요일을 알아내면 되는 문제이다.

(참고. 2016년은 윤년이다)

 

입출력의 예는 다음과 같다.

a b result
5 24 "TUE"

 

<문제 해결 아이디어>

처음에는 달별로 일수를 나누어 저장하고 이를 요일로 잘라야 하나 고민했는데, 혹시나 하는 마음에 날짜 관련 라이브러리가 있는지 찾아본 결과 관련 라이브러리가 있었다!

https://docs.python.org/ko/3/library/datetime.html?highlight=datetime#datetime-objects 

 

datetime — 기본 날짜와 시간 형 — Python 3.10.2 문서

datetime — 기본 날짜와 시간 형 소스 코드: Lib/datetime.py datetime 모듈은 날짜와 시간을 조작하는 클래스를 제공합니다. 날짜와 시간 산술이 지원되지만, 구현의 초점은 출력 포매팅과 조작을 위한

docs.python.org

파이썬 내장 라이브러리중 datetime에 weekday()라는 함수가 정수로 요일을 반환함(월요일이 0)을 알게 되었고

이 정수 결과 값을 ["MON", "TUE", "WED", "THU", "FRI", "SAT", "SUN"] 배열에 맵핑하여 최종 답의 값을 반환하게 코드를 구성하였다.

 

<문제 풀이 코드>

from datetime import datetime
def solution(a, b):
    day = ["MON", "TUE", "WED", "THU", "FRI", "SAT", "SUN"]
    answer = day[datetime(2016,a,b).weekday()]
    return answer

채점 결과

728x90
반응형