나의 답안
def solution(today, terms, privacies):
answer = []
y, m, d = map(int, today.split("."))
today = y * 12 * 28 + m * 28 + d
terms = {i[:1]:int(i[2:]) * 28 for i in terms}
for i, privacy in enumerate(privacies):
y, m, d = privacy.split('.')
d, c = d.split()
result = int(y) * 12 * 28 + int(m) * 28 + int(d) + terms[c]
if result <= today:
answer.append(i + 1)
return answer
Key Point
한 달을 28일로 가정하고 날자를 계산해야 하는 문제였는데
YYYY.MM.DD + YYYY.MM.DD 형식으로만 생각했더니 식이 더러워지고 연산이 복잡했다.
단순히 유효기간을 넘겼는지 여부만을 판단하는 거라면
년도 * 12 * 28
달 * 28
을 통해 모든 날자를 "일"로 변환하여 계산하는 것이 훨씬 편할 수도 있겠다.
'코딩 테스트 (Coding Test)' 카테고리의 다른 글
[프로그래머스] 숫자 영단어와 문자열 (0) | 2023.01.09 |
---|---|
[프로그래머스] 신고 결과 받기 (0) | 2023.01.09 |
[프로그래머스] 부족한 금액 계산하기 (0) | 2023.01.09 |
[프로그래머스] 없는 숫자 더하기 (0) | 2023.01.09 |
[프로그래머스] 최소직사각형 (0) | 2023.01.09 |