https://programmers.co.kr/learn/courses/30/lessons/12901
🚩 문제 설명
◾ a와 b로 월과 일이 주어지면 2016년 내의 해당 날짜의 요일을 반환하는 문제
◾ 2016년은 윤년인 것을 확인하자.
✅ 입출력
a: 요일을 구해야하는 월
b: 요일을 구해야하는 일
return ➡️ a월 b일의 요일을 반환한다.
a | b | return |
5 | 24 | "TUE" |
2 | 1 | "MON" |
📑 문제 풀이
with 파이썬 (Python)
weeks = ['FRI','SAT','SUN','MON','TUE','WED','THU']
day31 = [1, 3, 5, 7, 8, 10, 12]
day30 = [4, 6, 9, 11]
def solution(a, b):
ans = ''
week = 0
for mon in range(1, a):
if mon in day31:
week += 31
if mon in day30:
week += 30
if mon == 2:
week += 29
week = week + (b - 1)
week = week % 7
ans = weeks[week]
return ans
💬 Point
➡️ day31, day30 배열로 일수에 맞는 달로 나눈다.
➡️ week = week + (b - 1) : week가 0으로 선언되었기 때문
➡ week = week % 7 : 요일의 갯수가 7개 이므로
◾ 우선 일수를 뜻하는 week 변수를 선언한다.
- 요일은 7일을 기준으로 반복이 되므로 일수를 기준으로 구해줘야 한다.
◾ 해당 변수에 각 달에 맞는 일수를 더해준다.
◾ 만약, 5월 24일 이면
- 31 + 29 + 31 + 30 : 여기까지 4월의 일수를 센 것
- 31 + 29 + 31 + 30 + (24 - 1) = 144가 된다.
◾ 그리고 해당 일수를 7로 나눠준다.
◾ 2016년의 1월 1일이 금요일부터 시작하므로 weeks 배열은 'FRI' 부터 시작한다.
◾ 구한 수로 weeks[week] 하여 해당 날짜의 요일을 구한다.
728x90
'✏️ 𝗔𝗹𝗴𝗼𝗿𝗶𝘁𝗵𝗺 > 프로그래머스' 카테고리의 다른 글
[PG42889] 실패율 (0) | 2021.11.24 |
---|---|
[PG42586] 기능개발 (0) | 2021.11.23 |
[PG42888] 오픈채팅방 (0) | 2021.11.21 |
[PG42860] 조이스틱 (0) | 2021.11.06 |
[PG42840] 모의고사 (0) | 2021.11.06 |