나의 답안

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

을 통해 모든 날자를 "일"로 변환하여 계산하는 것이 훨씬 편할 수도 있겠다.

+ Recent posts