문제는 생긴거는 비교적 쉽게 생겼다. 하지만 생각해보니 5월 24일 무슨 요일인지 알기 위한 방법을 고안해내야 했었고, 내가 생각해낸 방법은 5월 24일이 2016년도에서 몇번째일인지 (예: 144일, 145일 등)를 알 수 있으면, 일주일 단위로 나눠서 금,토,일,월,화,수,목 등을 나머지로 확인할 수 있는 것이다. 다음과 같이 코드를 짜봤다:
def solution(a, b):
answer = ''
month_list = [31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]
months_before = month_list[:a-1]
sum_days = 0
for i in range(len(months_before)):
sum_days += months_before[i]
sum_days += b
remain = sum_days % 7
if remain == 1:
answer = 'FRI'
elif remain == 2:
answer = 'SAT'
elif remain == 3:
answer = 'SUN'
elif remain == 4:
answer = 'MON'
elif remain == 5:
answer = 'TUE'
elif remain == 6:
answer = 'WED'
elif remain == 0:
answer = 'THU'
return answer
생각보다 복잡하지만 잘 된다. List를 사용해서 각 월별로 있는 총 일수를 써주고, 입력받은 달이 5월이면 1,2,3,4월의 총 일수를 더해준다. 그 후 입력받은 일수 (b값)을 더해주고, 이 값을 7로 나누어 나머지에 따라 요일을 선택해준다.
※ 다른 사람의 풀이
def solution(a,b):
months = [31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]
days = ['FRI', 'SAT', 'SUN', 'MON', 'TUE', 'WED', 'THU']
answer = days[(sum(months[:a-1])+b-1)%7]
return answer
다른 사람의 풀이도 비슷하긴 했다. 다만 더욱 더 간결하게 표현했다. if문을 사용하지 않고 단순히 month[:a-1]의 합과
b-1의 합을 통해 요일을 구했다
'알고리즘 테스트 > 프로그래머스 문제풀이 및 해설' 카테고리의 다른 글
<프로그래머스 문제풀이: 같은 숫자는 싫어> Level 1 - 파이썬 (0) | 2020.10.27 |
---|---|
<프로그래머스 문제풀이: 가운데 글자 가져오기> Level 1 - 파이썬 (0) | 2020.10.25 |
<프로그래머스 문제풀이: K번째 수> Level 1 - 파이썬 (0) | 2020.10.21 |
<프로그래머스 문제풀이: 모의고사> Level 1 - 파이썬 (0) | 2020.10.21 |
<프로그래머스 문제풀이: 완주하지 못한 선수> Level 1 - 파이썬 (0) | 2020.10.21 |