728x90
https://programmers.co.kr/learn/courses/30/lessons/12901
문제는 심플하다.
노가다로도 해결할 수 있는 문제
그런데 난 좀 간단하게 해결하고 싶었다.
어떠한 규칙이 있을 것이라고 생각했다.
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
'코딩테스트' 카테고리의 다른 글
프로그래머스 - 124 나라의 숫자 (0) | 2021.09.15 |
---|---|
LG 코딩테스트 예제 - 마리오 게임 (0) | 2021.09.07 |
프로그래머스 - 상호평가 (2주차) (0) | 2021.08.10 |
프로그래머스 - 부족한 금액 계산하기 (0) | 2021.08.04 |
프로그래머스 - 문자열 다루기 기본 (0) | 2021.07.22 |