티스토리 뷰

728x90
반응형

문제

오늘 날짜가 주어지고, 약관에 따라 개인정보의 유효기간이 지나 파기해야 하는 개인정보의 번호를 리스트로 출력하는 문제이다.

 

풀이

  • 약관에 따라 유효기간이 다르고 개인정보가 수집된 날짜가 다르기 때문에 만료 기간을 계산하여 오늘 날짜와 비교하면 된다.
  • 먼저 약관의 정보는 빠른 속도로 불러오기 쉽도록 dictionary에 담는다.
  • 날짜를 일수로 변환하는 to_days 함수를 통해 날짜를 비교한다.
  • (주의) 개인정보 수집 날짜와 약관 유효기관을 더한 일수에 1을 빼어야 유효기간 만료일이다.

 

Python 코드

# 날짜를 일수로 변환
def to_days(date):
    y, m, d = map(int, date.split("."))
    return y*12*28 + m*28 + d

def solution(today, terms, privacies):
    answer = []
    today = to_days(today)
    
    # 약관 정보
    term = dict()
    for t in terms:
        type_, period = t.split()
        term[type_] = int(period)*28
    
    # 개인정보 만료기간과 오늘 일수를 비교하여 파기 목록에 추가
    for idx, p in enumerate(privacies):
        numb = idx+1
        date, type_ = p.split()
        
        # 오늘보다 만료기간이 짧으면 파기해야 한다.
        if to_days(date) + term[type_] -1 < today:
            answer.append(numb)
    
    return answer

 

문제출처

 

프로그래머스

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

programmers.co.kr

 

728x90
반응형
댓글