코딩테스트

프로그래머스 - 2016년

SigmoidFunction 2021. 8. 10. 12:14
728x90

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년 1월 1일은 금요일이다.

 

그리고 윤년이니 2월은 29일까지 있고

 

1월부터 31,29,31,30,31,30,31,31,30,31,30,31일로 구성되어 있다.

 

결국 5월을 알고 싶다면 4월까지의 일수를 더하고 거기에 원하는 달의 원하는 일까지 더한 다음에 7일로 나눈 나머지값의 인덱스에 원하는 요일을 집어넣으면 완성!

 

설명은 지금 간단하게 했지만 이런 문제를 처음 접하다보니 여기까지 접근하는 데 꽤나 애먹었다 ㅠ

 

그렇게 완성했다.

 

def solution(a, b):
    day = ['THU','FRI','SAT','SUN','MON','TUE','WED',]
    temp = 0
    s_day = [31,29,31,30,31,30,31,31,30,31,30,31]
    for i in range(a-1):
        temp += s_day[i]
    temp = temp+b
    day[temp%7]
    return day[temp%7]

속도 좋고 깔끔하다.

 

오랜 시간 고민하고 깔끔하게 해결해서 더 의미가 있는 코드인 것 같다.

728x90