본문 바로가기

알고리즘 삽질장

[프로그래머스] 2016년

반응형


문제설명

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년 한정으로 문제가 주어지기 때문에 2016년의 월마다 일수를 리스트로 정의했다. 그리고 2016년 1월 1일이 금요일이기 때문에 금요일부터 시작해서 목요일까지 순서로 리스트를 정의했다.
  • 그리고 만약 문제에서 1월달 날짜로 주어진다면 그냥 바로 일수(b)에서 7로 나눈 나머지에서 1을 뺀 인덱스로 하는 요일을 반환해주면 된다. 1월달 날짜가 넘어가서 주어지면 주어진 월(a)보다 1작은 달까지 1월달 사이의 총 일수를 계산하고 b 일수를 모두 더해준다 그리고 이를 7로 나눈 나머지에서 1을 뺀 값을 인덱스로 하는 요일을 반환해주면 된다

풀이

def solution(a, b):
    weekday = ['FRI','SAT','SUN','MON','TUE','WED','THU']
    days = [0, 31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]
    
    if a == 1:
        return weekday[b % 7 - 1]
    else:
        res = sum(days[:a]) + b
        return weekday[res % 7 - 1]
반응형