PGS / 개인정보 수집 유효기간 / Python
Updated:
풀면서
✅ 교집합을 이용하는 방법을 시도했는데 시간 초과로 실패했다.
결국 해결한 코드다.
def solution(today, terms, privacies):
answer = []
# 모든 달은 28일까지
terms_ = {}
for t in terms:
c, m = t.split(" ")
terms_[c] = int(m)
for i, p in enumerate(privacies):
date, c = p.split(" ")
y, m, d = map(int, date.split("."))
for _ in range(terms_[c]):
d += 28
if d > 28:
m +=1
d -= 28
if m > 12:
y += 1
m = 1
d-=1
if d == 0:
d = 28
m -= 1
if m < 1:
m = 12
y -= 1
c_y, c_m, c_d = (map(int, today.split(".")))
if c_y > y:
answer.append(i+1)
elif c_y == y and c_m > m:
answer.append(i+1)
elif c_y == y and c_m == m and c_d > d:
answer.append(i+1)
return answer
다른 풀이를 찾아보니 더 간단한 방법이 있어서 코드를 수정했다.
code ⌨️
def solution(today, terms, privacies):
answer = []
# 모든 달은 28일까지
terms_ = {}
for t in terms:
c, m = t.split(" ")
terms_[c] = int(m)
y, m, d = map(int, today.split("."))
today_ = y * 12 * 28 + m * 28 + d
for i, p in enumerate(privacies):
date, c = p.split(" ")
y, m, d = map(int, date.split("."))
# 모두 '일' 단위로 바꾸기
date_ = y * 12 * 28 + m * 28 + d
date_ += 28 * terms_[c]
if date_-1 < today_:
answer.append(i+1)
return answer
풀고 나서👆👀
시간, 분, 초 개념이 나오는 문제에서 전부 초 나 분 단위로 바꿔서 계산했던 것처럼 년, 월, 달, 일 문제도 같은 단위로 바꿔서 계산하면 편리하다.
Leave a comment