프로그래머스

[프로그래머스] Lv.1 개인정보 수집 유효기간 [Python, 파이썬] KAKAO

YoonJuHan 2023. 10. 15. 17:50
  • 문제 : https://school.programmers.co.kr/learn/courses/30/lessons/150370
  • 🔑 년.월.일을 일 수로 변환
    • 한 달 = 28일로 고정이기 때문에 쉽게 변환 가능
    • 약관 종류에 대한 유효 기간은 딕셔너리로 저장
      • 유효 기간도 일 수로 변환해서 저장
      • ex) "A 6" = "A" : 168
    • 오늘 날짜 >= 개인정보 수집 날짜 + 약관 유효 기간 
    • 약관 만료일이 지났으면 파기

 

def day(d):     # 년월일 -> 일
    d = list(map(int, d.split(".")))
    d = d[0] * 336 + d[1] * 28 + d[2]   
    return d

def solution(today, terms, privacies):
    answer = []

    today = day(today)                       # 오늘 날짜를 일 수로 변환

    terms_dict = dict()                      # 약관 종류 딕셔너리에 저장
    for i in terms:
        terms_dict[i[0]] = int(i[2:]) * 28   # 약관 종류 : 유효 기간 (일)
    
    for i in range(len(privacies)):
        d, t = privacies[i].split()          # 날짜, 약관 종류               
        endDay = day(d) + terms_dict[t]      # 약관 만료일 계산

        if today >= endDay:                  # 약관 만료일이 지났으면
            answer.append(i+1)               # 파기
            
    return answer