[프로그래머스] - 2016년 (파이썬, Python)

728x90
반응형

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

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

문제 설명

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"를 반환하세요.

코드

 

해시 테이블 생성 코드

def solution(a, b):
    month = {'1' : "FRI", "2" : "MON", "3" : "TUE", "4" : "FRI", "5" : "SUN", "6" : "WED",
            "7" : "FRI", "8" : "MON", "9" : "THU", "10" : "SAT", "11" : "TUE", "12" : "THU"}
    weeks = {"1" : "SUN", "2" : "MON", "3" : "TUE", "4" : "WED", "5" : "THU", "6" : "FRI", "7" : "SAT"}
    week = {"SUN" : "1", "MON" : "2", "TUE" : "3", "WED" : "4", "THU" : "5", "FRI" : "6", "SAT" : "7"}

    M = month[str(a)]
    B = (b % 7) - 1
    D = int(week[M]) + B
    while D <= 0:
        D += 7
    if D > 7:
        D = D % 7
    answer = weeks[str(D)]
    return answer

 

달의 날짜만큼 더해준 코드

def solution(a, b):
    days = {0 : "FRI", 1 : "SAT", 2 : "SUN", 3 : "MON", 4 : "TUE", 5 : "WED", 6 : "THU"}
    
    if a == 1:
        b = b % 7
    if a == 2:
        b = (b+31)%7
    if a == 3:
        b = (b + 31 + 29) % 7
    if a == 4:
        b = (b + 31 + 29 + 31) % 7
    if a == 5:
        b = (b + 31 + 29 + 31 + 30) % 7
    if a == 6:
        b = (b + 31 + 29 + 31 + 30 + 31) % 7
    if a == 7:
        b = (b + 31 + 29 + 31 + 30 + 31 + 30) % 7
    if a == 8:
        b = (b + 31 + 29 + 31 + 30 + 31 + 30 + 31) % 7
    if a == 9:
        b = (b + 31 + 29 + 31 + 30 + 31 + 30 + 31 + 31) % 7
    if a == 10:
        b = (b + 31 + 29 + 31 + 30 + 31 + 30 + 31 + 31 + 30) % 7
    if a == 11:
        b = (b + 31 + 29 + 31 + 30 + 31 + 30 + 31 + 31 + 30 + 31) % 7
    if a == 12:
        b = (b + 31 + 29 + 31 + 30 + 31 + 30 + 31 + 31 + 30 + 31 + 30) % 7
    b -= 1
    if b < 0:
        b += 7
    answer = days[b]
    return answer

 

풀이 3

def solution(a, b):
    answer = ''
    month = [31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]
    days = sum(month[:a-1]) + b
    week = days % 7
    date = ['THU', 'FRI', 'SAT', 'SUN', 'MON','TUE','WED']
    answer = date[week]
    return answer
728x90
반응형