본문 바로가기
프로그래머스/1단계

(Python/LV2)개인정보 수집 유효기간

by windy7271 2023. 1. 7.
728x90
반응형

문제출처: https://school.programmers.co.kr/learn/courses/30/lessons/150370

 

프로그래머스

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

programmers.co.kr

풀이:

 

def solution(today, terms, privacies):

    dic = dict()
    for i in terms:
        Alpha, mon = i.split(" ")
        dic[Alpha] = mon
    y,m,d = map(int,today.split("."))
    result = []
    for idx,i in enumerate(privacies,start=1):
        date, alpah = i.split(" ")
        yy,mm,dd = map(int,date.split("."))
        mm += int(dic[alpah])
        while mm >= 12:
            yy += 1
            mm -= 12
        if yy > y:
            continue

        elif yy == y:
            if mm > m:
                continue

            elif mm == m:
                if dd > d:
                    continue

        result.append(idx)

    return result
    
모르겠다.    
   
2개 틀림 이유는 뭘까,?

while 문 mm>=12 를 mm>12로 바꿔주면됨

 

 

 

일수로 그냥 다 바꿔서 유효기간 날짜가 오늘날짜보다 작으면 파기 시켜야한다를 사용함.

def solution(today, terms, privacies):

    dic = dict()
    for i in terms:
        Alpha, mon = i.split(" ")
        dic[Alpha] = mon
    y,m,d = map(int,today.split("."))
    sum_ymd = (y*12*28)+(m*28)+d
    result =[]
    for idx,i in enumerate(privacies,start=1):
        date, alpah = i.split(" ")
        yy,mm,dd = map(int,date.split("."))
        mm += int(dic[alpah])
        sum_ymd2 = (yy*12*28)+(mm*28)+dd
        if sum_ymd2 <= sum_ymd:
            result.append(idx)
    return result

 

반응형

댓글