본문 바로가기

코딩 테스트/프로그래머스

[프로그래머스 Lv 1, Python 3] 개인정보 수집 유효기간

728x90
반응형

문제 : 개인정보 수집 유효기간


풀이 방법

월 마다 일 수가 28일로 고정되어 있으니 일 단위로 계산을 하기가 실제 날짜 단위보다 쉽게 할 수 있다. 일 단위로 계산 해야할 날짜를 쪼개서 개인정보 날짜랑 비교를 하면 된다.


소스 코드

def solution(today, terms, privacies):
    answer = []
    
    # terms dict
    privacy_cat_dict = dict()
    for i in terms:
        i = i.split()
        privacy_cat_dict[i[0]] = i[1]       # {'A': '6', 'B': '12', 'C': '3'}

    today_date = trans_date(today.split('.'))   # 	679551

    for i, privacy in enumerate(privacies):
        privacy = privacy.split()           # ['2021.05.02', 'A']
        
        privacy_date_str = privacy[0]       # '2021.05.02'
        cat = privacy[1]                    # 'A'
    
        privacy_date = trans_date(privacy_date_str.split('.'))  # 678707
        
        if (privacy_date + (int(privacy_cat_dict[cat]) * 28)) <= today_date:
            answer.append(i+1)
    
    return answer

def trans_date(date: list):
    y, m, d = date
    cal_date = (int(y) * 12 + int(m)) * 28 + int(d)
    return cal_date

 

728x90
반응형