문제풀이/프로그래머스

개인정보 수집 유효기간(카카오) 문제풀이

soo-dal 2024. 3. 13. 22:13

문제 

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

 

프로그래머스

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

programmers.co.kr

 

 

 

 

문제 접근 방식

오늘을 기준으로 수집된 개인정보들에 대해 파기되어야하는지 여부를 구하는 문제이다. 각 개인정보마다 문자열로 주어진 [개인정보 수집 일자]와 [약관 종류]가 주어지며 해당 정보를 통해 만료기간을 구해서 오늘 날짜와 비교해야한다.

 

[오늘 날짜]와 [만료기간]을 비교하는 부분이 핵심이며 날짜의 대소 비교를 위해서 해당 날짜들을 모두 정수로 변환하여 비교하도록 구현했다.

MONTH=12
DATE=28
def convert_date_to_num(date):
    y,m,d=map(int,date.split("."))
    return y*MONTH*DATE+m*DATE+d

 

 

코드

MONTH=12
DATE=28
def convert_date_to_num(date):
    y,m,d=map(int,date.split("."))
    return y*MONTH*DATE+m*DATE+d

def solution(today, terms, privacies):
    answer = []
    term_dict=dict()
    for term in terms:
        policy,duration=term.split()
        term_dict[policy]=int(duration)
    
    today_num=convert_date_to_num(today)
    
    for idx,privacy in enumerate(privacies):
        date,policy=privacy.split()
        date_num=convert_date_to_num(date)+DATE*term_dict[policy]-1
        if date_num<today_num:
            answer.append(idx+1)
    return answer