개발자 블로그
프로그래머스 - 2016년 본문
문제 설명
더보기
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일같은 날짜는 주어지지 않습니다)
입출력 예
abresult5 | 24 | "TUE" |
나의 풀이
calender = {
1:31, 2:29, 3:31, 4:30,
5:31, 6:30, 7:31, 8:31,
9:30, 10:31, 11:30, 12:31
}
week = ['FRI', 'SAT', 'SUN', 'MON', 'TUE', 'WED', 'THU']
def solution(a, b):
for_day = 0
for i in range(1, a):
for_day += calender[i]
which_day = (for_day + b) % 7
answer = week[which_day-1]
return answer
설명
1) 윤년 달력의 월과 일수를 딕셔너리로 만들어줌.
2) 1월 1일이 금요일부터 시작이라 금요일을 시작으로 리스트 만들어줌.
3) a월과 b일이 주어지는데 a의 전 월까지 각 월의 일수를 총 더해주고 b를 더해준다. -> 1/1 ~ 주어진 a월b일 까지의 총 일수
4) 총 일수에서 7을 나눈 나머지로 요일을 확인할 수 있다. ex) 나머지가 1이면 금요일, 2이면 토요일...이런식으로
5) 리스트의 인덱스로 접근하기 위해 which_day 에서 1을 빼준다. 0부터 시작이니까!
'알고리즘 > 프로그래머스' 카테고리의 다른 글
프로그래머스 - 2018카카오 블라인드 채용 [1차] 다트 게임 (0) | 2022.04.25 |
---|---|
프로그래머스 - 1차 비밀지도 (0) | 2022.04.22 |
프로그래머스 - 약수의 개수와 덧셈 (0) | 2022.04.21 |
프로그래머스 - 해시: 완주하지 못한 선수 (0) | 2022.04.21 |
프로그래머스 - 크레인 인형뽑기 게임 (0) | 2022.04.21 |