머신러닝 개발자의 러닝머신

[2023KAKAO BLIND RECRUITMENT-개인정보 수집 유효기간] (Python) 본문

알고리즘/프로그래머스

[2023KAKAO BLIND RECRUITMENT-개인정보 수집 유효기간] (Python)

oongsong 2023. 4. 11. 22:46
반응형

문제 -문제링크

문제 풀이 

  • 약관 종류에 따른 기간 정보는 dic으로 관리 
  • 현재 (month + 약관 기간)이 12월보다 크면 12로 나눈 몫을 year에 더해주고, 12로 나눈 나머지를 month로 정함 
     -> 이때, (month+약관 기간)이 12보다 큰데, 12의 배수이면 (12로 나눈 몫-1)을 year에 더해주고, month = 1로 정함  

리뷰

  • 시간, 달, 년도 등 사람들이 사용하는 단위는 1부터 시작하는 것을 유의할 것 
  • 무조건 12로 나눈 몫, 나머지를 사용하면 나머지가 0이되는 값이 발생함 유의 -> 0달은 존재 x 

코드 구현 

def solution(today, terms, privacies):
    answer = []
    
    dic = {}
    for t in terms:
        name, last = t.split()
        dic[name] = int(last)
    cur = tuple(map(int, today.split(".")))
    for i in range(len(privacies)):
        info = privacies[i]
        time, kind = info.split()
        time = tuple(map(int, time.split(".")))
        # 약관유효기간 
        nxt_y = time[0]
        nxt_m = time[1]+dic[kind]
        nxt_d = time[2]
        if nxt_m >12: #12월 넘어감
            if nxt_m%12 == 0:
                nxt_y += nxt_m//12-1
                nxt_m = 12
            else:
                nxt_y += nxt_m//12
                nxt_m = nxt_m%12
            
        nxt = (nxt_y, nxt_m, nxt_d)
        # 현재 지났는지 점검 
        if cur >= nxt: #튜플의 형태로(년, 월, 일) 날짜 대소 비교
            answer.append(i+1)
        
    return answer
반응형