/ ALGORITHM

(프로그래머스 with python) 2016년


LEVEL1 2016년

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


언젠가 한번씩 풀어보았던 문제인데 아직까지 헷갈리고 어렵다…. ㅠㅠ 진짜 꾸준히 반복해서 풀어봐야겠다..


1월1일이 금요일이기 때문에 1 % 7 == 1로 7로 나누었을때 나머지가 1인 경우에는 금요일이라는 것을 알 수 있다. weekend에 순서대로 fri부터 thu까지 나머지값 기준으로 작성해주자 (금요일이 7로 나누었을때 나머지가 1이기 때문에 가장 첫번째)

2016년은 윤년이기 때문에 2월은 29일로 지정해준다. 이후 나머지 값들은 주먹으로 계산해보자 😅 (난 주먹쥐고 31일 30일 구분해줬다 ^^)

2월1일이 무슨 요일인지 알기위해서는 1월~2월까지 총 몇일 있는지를 계산한다 31 + 29 + 1(일)
이후 days에 값을 담아준뒤 %7로 나누어 나머지를 확인한다. 이미 weekend는 7로 나눈 나머지로 요일을 정렬해주었기 때문에 인덱스가 0부터 시작하는 것을 감안하여 -1을 하여 원소의 값을 찾아준다.

def solution(a, b):
    weekend = ['FRI', 'SAT', 'SUN', 'MON', 'TUE', 'WED', 'THU']
    month = [31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]
    days = sum(month[:a - 1]) + b
    return weekend[(days - 1) % 7]

solution(5, 24)


datetime을 import해와서 weekday()를 사용해서 구하는 방법도 있다… 대단하다….이런 생각….


from datetime import datetime

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

solution(5, 24)