-
개인정보 수집 유효기간(2023 KAKAO BLIND RECRUITMENT)코딩테스트 연습 2023. 11. 16. 11:49
문제설명
제한사항
입출력 예 및 설명
문제풀이1
import pandas as pd import datetime def solution(today, terms, privacies): answer = [] idx = 0 dict = {} for t in terms: dict[t[0]] = t[2:] for priv in privacies: idx += 1 수집일자, 약관코드 = pd.to_datetime(priv[0:10]), priv[11:] 오늘일자 = pd.to_datetime(today) y, m, d = 수집일자.year, 수집일자.month, 수집일자.day ty, tm, td = 오늘일자.year, 오늘일자.month, 오늘일자.day priv_day = (y-1)*12*28 + (m-1)*28 + d to_day = (ty-1)*12*28 + (tm-1)*28 + td avaliable_day = int(dict[약관코드]) * 28 del_day = priv_day + avaliable_day - 1 if del_day < to_day: answer.append(idx) return answer
다른 사람의 풀이를 보고 오니, 날짜를 str[:5] 이런식으로 슬라이싱을 할 필요가 없다. 날짜가 2021.05.20 이런 형태로 들어오니까 '.' 을 기준으로 split를 하면 된다! 나는 슬라이싱을 하기 싫어서 timestamp로 바꿔서 year, month, day 을 추출함.
채점결과
시간도 오래걸리고~ 용량도 많이 잡고~~
다른 사람 풀이
def to_days(date): year, month, day = map(int, date.split(".")) return year * 28 * 12 + month * 28 + day def solution(today, terms, privacies): months = {v[0]: int(v[2:]) * 28 for v in terms} today = to_days(today) expire = [ i + 1 for i, privacy in enumerate(privacies) if to_days(privacy[:-2]) + months[privacy[-1]] <= today ] return expire
채점결과
이 풀이가 훨씬 효율적이다!!