프로그래머스/Lv.1
2023 KAKAO BLIND RECRUITMENT > 개인정보 수집 유효기간 - Python, 구현, map
아찌방
2024. 11. 22. 17:45
https://school.programmers.co.kr/learn/courses/30/lessons/150370
프로그래머스
SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프
programmers.co.kr
풀이 - 나의 생각
month에 대해 계산 후 year, day의 부가적인 계산을 하냐
year, month, day를 모두 day화 하여 계산을 하냐
편한 방식으로 진행하면 됩니다.
코드
def solution(today, terms, privacies):
answer = []
dict_terms = {term.split()[0]: int(term.split()[1]) for term in terms}
today_int = int(today.replace(".", "")) # YYYYMMDD 형태로 변환
for idx, privacy in enumerate(privacies):
date, term_type = privacy.split()
year, month, day = map(int, date.split("."))
# 유효기간 계산
month += dict_terms[term_type]
year += (month - 1) // 12
month = (month - 1) % 12 + 1
day -= 1
if day == 0:
day = 28
month -= 1
if month == 0:
month = 12
year -= 1
# 유효기간을 YYYYMMDD 정수로 변환
expiry_date = int(f"{year:04}{month:02}{day:02}")
# 만료 여부 확인
if expiry_date < today_int:
answer.append(idx + 1)
return answer
def forDay(today):
year, month, day = map(int, today.split("."))
return year*12*28 + month*28 + day
def solution(today, terms, privacies):
dict_terms = {term[0]: int(term[2:]) * 28 for term in terms}
today = forDay(today)
return [ i+1 for i, privacy in enumerate(privacies)
if today >= forDay(privacy[:-2]) + dict_terms[privacy[-1]]
]
728x90