[프로그래머스] 개인정보 수집 유효기간(Python)

수경·2023년 6월 2일
3

problem solving

목록 보기
150/174

프로그래머스 - 개인정보 수집 유효기간

풀이

  1. 처음 풀이... 난잡 그 잡채
    만약 정보 수집일자가 2021.05.02 이고 기한이 6개월일때 2021.11.01 를 구하고 싶었다!
    그래서 year, month, day 를 나눠서 구하고자 했다...
    근데 또 if문 길게 쓰고 뭐 한 달이 넘어가면 month+1하고 이런게 싫어서

    year = int(year) + 1 if int(month) + d.get(t) > 12 else int(year)
    month = (int(month) + (int(date) - 2 + d.get(t) * 28) // 28) % 12
    date = (int(date) - 2) % 28 + 1

    이런식으로 풀었다..
    근데 너무 난잡하고 정신없고 읽기 어려운 것 같고, 심지어 오늘 날짜와 대소비교를 해주려면 연산을 또 해줘야해서 결국 이것저것 해보다가 쿨하게 날림!

  1. 어차피 대소를 비교해야 한다면 날짜를 year * 12달 * 28일 + month * 28일 + day 로 바꿔서 저장해버리자는 결론이 났다. 훨씬 간편하고 빠르다!
    왜 진작 이 생각을 못 했지...

코드

def solution(today, terms, privacies):
    d = {}
    answer = []    
    for term in terms:
        t, m = term.split(' ')
        d[t] = int(m) * 28
    
    today_days = into_days(today)
    for idx, p in enumerate(privacies):
        date, term = p.split(' ')
        p_days = into_days(date) + d.get(term)
        
        if p_days <= today_days:
            answer.append(idx + 1)
        
    return answer


def into_days(date):
    year, month, day = map(int, date.split('.'))
    return year * 12 * 28 + month * 28 + day
    
profile
어쩌다보니 tmi뿐인 블로그😎

0개의 댓글