코딩테스트

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

pyflu 2023. 8. 11. 18:21

 

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

 

https://school.programmers.co.kr/learn/courses/30/lessons/150370

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr


 

 


def date_comparison(expiration_date, today):
#유효기간 남았으면 True 리턴
#유효기간 끝났으면 False 리턴
   
    if expiration_date[0] > today[0]: #year 비교
        return True
   
    if expiration_date[0] == today[0] and expiration_date[1] > today[1]: #month 비교
        return True
   
    if expiration_date[0] == today[0] and expiration_date[1] == today[1] and expiration_date[2] > today[2]: #day 비교
        return True
   
    return False
   
def solution(today, terms, privacies):
   
    result = []
    i = 1
   
    today = list(map(int,today.split(".")))
    #2022.05.19문자열을 "."으로 나눈 후 list안에 int형으로 바꿔 넣기
    #[2022, 5, 19]
   
   
    expiration = {term[0]:int(term[2:]) for term in terms}
    #유효기간 dict 예) {"A" : 3, "B" : 12, "C" : 3}
   
    for pri in privacies:
       
        pri = pri.split(" ")
        #['2021.05.02', 'A']
       
        pri_date = list(map(int,pri[0].split(".")))
        #[2021, 5, 2]
       
        pri_date[1] += expiration[pri[1]]
        #pri_date의 month에 유효기간 더하기
        #[2021, 5+a, 2]
       
        if (pri_date[1] > 12):
        #month에 유효기간 더했을 때 12 넘을시
           
            if (pri_date[1] % 12 == 0):# month가 12의 배수인경우
               
                pri_date[0] += (pri_date[1] // 12) - 1 #year에 month를 12나눈 몫-1 만큼 더하기
                pri_date[1] = 12 #month는 12고정
               
            else:    
                pri_date[0] += pri_date[1] // 12 #year에 month로 12나눈 몫 만큼 더하기
                pri_date[1] %= 12 #month는 12로 나눈 나머지 넣기
           
        if date_comparison(pri_date, today) == False : #유효기간 지났을 시
            result.append(i) # result에 i 추가
       
        i += 1
       
    return result

728x90