from datetime import datetime
def count_date(day):
dt = datetime.strptime(day, "%Y.%m.%d")
#strptime함수로 datetime 형식으로 변환하는 dt를 만듭니다.
all_day = dt.year * 12 * 28 + (dt.month - 1) * 28 + dt.day
# 총 며칠인지 계산합니다 (한달은 28일입니다.)
# 월을 0부터 시작하는 인덱스로 사용하여 쉽게 계산하기 위함입니다.
# 1월은 day로 계산하고 2월부터 계산하기 위해서 입니다.
# 예를 들어, 1월은 인덱스 0, 2월은 인덱스 1, ..., 12월은 인덱스 11로 매핑됩니다.
return all_day
def solution(today, terms, privacies):
answer = [] # 결과를 저장할 리스트
terms_dict = {} # terms에 포함된 각 유효기간과 해당 기간을 저장할 딕셔너리입니다
today = count_date(today) # 오늘 날짜를 카운트하여 저장합니다
for i in terms:
name, days = i.split()
terms_dict[name] = int(days) * 28
# terms 리스트를 순회하며 약관의 종류(이름)과 기간을 terms_dict에 저장합니다
for i, privacies in enumerate (privacies):
# enumerate 함수는 파이썬에서 제공하는 내장 함수로, 순회 가능한(iterable)
# (예: 리스트, 튜플, 문자열 등)를 인자로 받아 해당 객체의 각 요소와 인덱스를 순차적으로 반환하는 함수입니다.
day, term = privacies.split(" ") # " "을 기준으로 "day", "term"을 구분합니다.
day = count_date(day) # 주어진 날짜를 카운트하여 저장합니다
day += terms_dict[term] # 개인정보가 수집된 유효기간을 더하여 적용된 날짜를 계산합니다
if today >= day: # 오늘 날짜와 개인정보가 수집된 요효기간 날짜를 비교하여 오늘보다 과거인 경우,
answer.append(i + 1) # 해당 용어의 인덱스에 1을 더하여 answer 리스트에 추가합니다.
return answer
'코딩 연습 > 프로그래머스 코드' 카테고리의 다른 글
윤년.py (0) | 2023.10.19 |
---|---|
사분면 고르기.py (0) | 2023.10.19 |
양과늑대2023.py (0) | 2023.10.15 |