일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
Tags
- Dijkstra
- 파이썬 #알고리즘 #코딩테스트 #프로그래머스
- java #자바 #나동빈
- 백준 #파이썬 #알고리즘 #코딩테스트
- react #리액트 #동빈나
- java #자바 #동빈나
- 투포인터
- 백트랙킹
- DFS
- 다이나믹프로그래밍
- 다익스트라
- 백준
- 자바 #java
- 코딩테스트
- PYTHON
- 파이썬 #백준 #알고리즘 #코딩테스트
- css #웹 #생활코딩
- 프로그래머스
- react #리액트 #동빈나 #나동빈 #유튜브강의
- 파이썬
- 백준 #알고리즘 #파이썬 #코딩테스트
- css #생활코딩 #웹
- 재귀
- 프로그래머스 #파이썬 #코딩테스트 #알고리즘
- BFS
- java #자바
- dp
- java #자바 #생활코딩
- 프로그래머스 #파이썬 #알고리즘 #코딩테스트
- 알고리즘
Archives
- Today
- Total
커리까지
[프로그래머스] 2016년 본문
728x90
SMALL
문제 설명
2016년 1월 1일은 금요일입니다. 2016년 a월 b일은 무슨 요일일까요? 두 수 a ,b를 입력받아 2016년 a월 b일이 무슨 요일인지 리턴하는 함수, solution을 완성하세요. 요일의 이름은 일요일부터 토요일까지 각각 SUN,MON,TUE,WED,THU,FRI,SAT
입니다. 예를 들어 a=5, b=24라면 5월 24일은 화요일이므로 문자열 "TUE"를 반환하세요.
제한 조건
- 2016년은 윤년입니다.
- 2016년 a월 b일은 실제로 있는 날입니다. (13월 26일이나 2월 45일같은 날짜는 주어지지 않습니다)
입출력 예
a | b | result |
---|---|---|
5 | 24 | "TUE" |
제출 답안
- 평소보다 조금 많이 고민했던 문제
- 7일로 나눈 나머지를 기준으로 요일을 배정한다.
- 금요일이 첫 번째 요일이니 1 % 7 = 1이므로 1로 두고 뒤에 날짜들을 설정한다.
- 윤년이니 2월만 29일로 두고 나머지는 기존의 개월에 따라 일수를 부여한다.
- 시작일은 0으로 설정한다.
- 만약
i
가 입력 받은 월과 같다면b
를 아니면month
에서 해당 월에 맞는 일수를 7로 나눠 나머지를 저장한다. - 시작일을 기준으로 요일을 찾아야 하기에 시작일에 나머지 일수를 더하고 다시 7로 나눈다.
- 2월로 달이 넘어갔을 경우 1월 마지막 일과 2월의 요일에 맞는 일수를 더하고 나누어야지만 다시 로테이션이 돌아서 찾을 수 있다.
- 예를 들어 1월 마지막 요일의 값이 6이고 2월의 일수 29일을 7로 나눈 나머지 2를 더하면 8이므로 7일이 넘었으므로 금요일이 지난거다.
- 그래서 7로 나눠서 다시 1로 맞춘다.
days
에서start_day
에 맞는 요일을 찾아서 반환하면 된다.
def solution(a, b):
# 1
days= {3: 'SUN', 4: "MON", 5: "TUE", 6: "WED", 0: "THU", 1: "FRI", 2: "SAT"}
# 2
month = {1: 31, 2: 29, 3: 31, 4: 30, 5: 31, 6: 30, 7: 31, 8: 31, 9: 30, 10: 31, 11: 30, 12: 31}
# 3
start_day = 0
for i in range(1, a + 1):
# 4
day = (b if i == a else month[i]) % 7
# 5
start_day = (start_day + day) % 7
# 6
answer = days[start_day]
return answer
728x90
LIST
'알고리즘 > 풀이' 카테고리의 다른 글
[프로그래머스] 짝수와 홀수 (0) | 2022.09.26 |
---|---|
[프로그래머스] 나머지가 1이 되는 수 찾기 (0) | 2022.08.08 |
[프로그래머스] 3진법 뒤집기 (0) | 2022.06.29 |
[프로그래머스] 예산 파이썬 (0) | 2022.06.25 |
[프로그래머스] 약수의 개수와 덧셈 (0) | 2022.06.23 |
Comments