문제
- 1~N번으로 분류되는 개인정보가 있다. 약관 종류에 따라 보관 유효기간이 다른데, 만약 A약관의 유효기간이 6달이라면 해당 개인정보는 수집기간으로부터 6달동안만 보관 가능하다.
- 개인정보의 수집일자와 약관의 종류, 약관의 종류별 유효기간이 주어질 때 "파기해야할 개인정보"의 고유번호 구하기
- 모든 달은 28일까지 있다고 가정한다.
- 1 <= 약관의 종류 <= 20
- 1 <= 개인정보 개수 <= 100
풀이
- 수집기간은 YYYY.MM.DD 형태로 주어지고, 유효기간은 달(Month)을 기준으로 주어진다.
- (수집기간 + 유효기간)을 days로 계산한 뒤, 파기해야하는지 확인한다. (calc 함수)
def calc(date, month) :
y, m, d = map(int, date.split('.'))
return y*28*12 + (m+month)*28 + d
def solution(today, terms, privacies):
today = calc(today, 0) # 오늘 날짜
# 약관 정보 딕셔너리화
term = {}
for t in terms :
a, m = t.split()
term[a] = int(m)
# 개인정보 별 파기해야하는지 확인
answer = []
for i, privacy in enumerate(privacies) :
date, a = privacy.split()
if today >= calc(date, term[a]) :
answer.append(i+1)
return answer