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

민갱·2023년 6월 20일

CT

목록 보기
13/35

골치 아팠다. split()함수 뒤에 인덱싱 사용이 가능한지 알았고, 날짜 비교 및 계산에 datetime이라는 라이브러리를 사용해보기도 했고(하지만 다르게 풀었다..ㅎㅎ) dictionary 에 enumerate()함수를 또 사용해보기도 했다.

실패

import datetime as dt
from dateutil.relativedelta import relativedelta
def solution(today, terms, privacies):
    answer = []
    todaySplit = today.split('.')
    todate = dt.datetime(year=int(todaySplit[0]),month=int(todaySplit[1]),day=int(todaySplit[2]))

    tmp = []
    tmp2 = []
    for i in terms:
        tmp.append(i.split(' ')[0])
        tmp2.append(i.split(' ')[1])
    termsDict = dict(zip(tmp,tmp2))

    
    tmp3 = []
    tmp4 = []
    for j in privacies:
        pridate = dt.datetime(year=int(j.split(' ')[0].split('.')[0]),month=int(j.split(' ')[0].split('.')[1]),day=int(j.split(' ')[0].split('.')[2])) + relativedelta(months=int(termsDict[j.split(' ')[1]]))
        
        if todate < pridate:
            print(pridate)
            print(privacies.index(j))
            
    print(answer)
        
        
    
    
    return answer

성공

def solution(today, terms, privacies):
    answer = []
    year = int(today.split('.')[0])*12*28
    month = int(today.split('.')[1])*28
    day = int(today.split('.')[2])
    today = year + month + day
    terms = {i[:1]:int(i[2:])*28 for i in terms}
    
    for i,p in enumerate(privacies):
        y,m,d = p.split('.')
        d,c = d.split(' ')
        p = int(y)*12*28 + int(m)*28 + int(d)
        if p + terms[c] <= today:
            answer.append(i+1)
    return answer
profile
가보자고

0개의 댓글