알고리즘 풀이/프로그래머스

[Level 1] 2016년

mhko411 2021. 2. 19. 09:37
728x90

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년의 특정 달의 특정 일을 입력받아 요일을 출력해야 한다.

이를 위해 각 달이 몇 일까지 있는지 알면 편하다.

입력받은 월 전까지의 일 수를 모두 더한다음 보고자하는 일수 b를 더하고 -1을 해준다. 

여기에 7로 나눈 나머지를 취하여 days의 인덱스로 활용한다.

 

1월 1일부터 5월 24일까지 더한 일수를 7로 나눈 나머지가 5가 된다. 이때 5가 화요일이되도록 하며 그 이후에 요일을 다음 인덱스부터 써주면된다. 넘어가면 0부터 다시

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