알고리즘/프로그래머스

[프로그래머스]Lv1. 개인정보 수집 유효기간(Python)

cha_eyoon 2024. 3. 14. 20:22

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

 

프로그래머스

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

programmers.co.kr

 

문제 접근

 

1. 주어진 약관 종류와 이에 따른 유효기간을 저장할 적절한 자료구조를 선정한다. => 딕셔너리 선택

2. 연, 월, 일 형식으로 되어 있는 날짜 정보를 일수로 통일하여 문제를 푼다. => 별도 함수 생성

3. enumerate() 함수를 사용해 answer에 파기해야 할 개인정보에 해당하는 번호인 (index+1)를 추가해 나간다.  

 

코드
def changeDate(date):
    y, m, d = map(int, date.split('.'))
    return (y*12*28) + (m*28) + d

def solution(today, terms, privacies):
    answer = []
    today = changeDate(today)
    
    # 약관 종류: key, 유효기간: value
    dic = {}
    
    for t in terms:
        k, v = t.split()
        dic[k] = int(v)
    
    for i, p in enumerate(privacies):
        d, k = p.split()
        if changeDate(d) + (dic[k] * 28) <= today:
            answer.append(i+1)
        
    return answer

 

문제 회고

 

날짜 문제는 단위를 통일하고 변환해주는 함수를 별도로 생성하는 것이 편리하다.