본문 바로가기
Coding Test/Python

[프로그래머스] 2016년 Python Code

by giem 2022. 8. 20.
반응형

이번엔 쉬운 문제를 가져와 봤다.

프로그래머스 2016년을 Python으로 풀어보겠다.

 

다른 언어 풀이를 보고 싶다면 아래 링크를 확인해보자

2022.08.20 - [Coding Test/C++] - [프로그래머스] 2016년 C++ Code

2022.08.20 - [Coding Test/JavaScript] - [프로그래머스] 2016년 JavaScript Code

2022.08.20 - [Coding Test/Go] - [프로그래머스] 2016년 Go Code


문제


구현

구현은 2016년 안에서만 계산해야 해서

모든 월의 일 수와

요일들을 리스트에 넣고

결과값을 계산했다.

 

코드로 보겠다.


코드
def solution(a, b):
    days = ["FRI","SAT","SUN","MON","TUE","WED","THU"]
    month = [31,29,31,30,31,30,31,31,30,31,30,31]

    m = a-1
    d = sum(month[:m])+(b-1)

    return days[d%7]

 

a-1로 month를 계산하게 했고

month를 sum 해서 추가하고 일을 추가해서 계산할 수 있게 했다.

mod(%) 연산과 맞게 하기 위해

금요일부터 리스트에 넣었다.


다른 풀이

사실 별다른 로직이 필요한 문제가 아니어서 다른 풀이가 없지만

출제자의 의도를 회피하기 위해 datetime 패키지를 가져온 분이 있었다 ㅋㅋㅋ

from datetime import date
DAY = {0: 'MON', 1: 'TUE', 2: 'WED', 3: 'THU', 4: 'FRI', 5: 'SAT', 6: 'SUN'}

def getDayName(a,b):
    d = date(2016, a, b)
    return DAY[d.weekday()]

해당 패키지에서는 date.weekday()를 쓰면 요일을 반환해준다

실무에서는 이 패키지를 많이쓰긴 하는데

 

이 문제에서 출제자는 이렇게 풀길 원하지 않았을 것 같지만

여러 연도가 있다면 훨씬 괜찮은 방법이다 ㅎㅎ

반응형

댓글