반응형
문제 링크
문제 해설
주어진 조건들을 split을 통해 사용 가능한 데이터로 저장하여 이용하는 것이 첫 번째로 떠올랐다. 그러고 나서, 유효기간이 지났는지 어떻게 비교를 해야 할까 생각했을 때, 시간의 단위처럼 날짜도 절대적인 숫자로 바꿔서 크기를 비교해 주면 될 것 같았다.
def solution(today, terms, privacies):
#약관 종류 , (절대적기준)유효기간 딕셔너리 형태로 저장
data_dic={}
today_info = list(map(int,today.split('.'))) # 오늘 날짜 리스트로 변환
result = []
for i in terms: # 약관종류와 개월수 딕셔너리로 저장
type, expire = i.split()
data_dic[type] = int(expire)*31 # 유효기간을 한 달 일 수로 치환 (절대적 기준잡기)
for i in range(len(privacies)):
date, type = privacies[i].split()
date_info = list(map(int, date.split('.'))) # 수집일자 리스트로 변환
year = (today_info[0] - date_info[0])*372 # 31 * 12 = 372/ 연도의 차이 비교
month = (today_info[1] - date_info[1])*31 # m * 31 / 달의 차이 비교
day = today_info[2] - date_info[2] # 일수의 차이 비교
total = year+month+day
if data_dic[type] <= total: # 총합의 크기 비교
result.append(i+1) #주어진 정보보다 total이 이상이면 유효기간 지나감.
return result
# 예시 테스트 케이스
today = "2022.05.19"
terms = ["A 6", "B 12", "C 3"]
privacies = ["2021.05.02 A", "2021.07.01 B", "2022.02.19 C", "2022.02.20 C"]
result = solution(today, terms, privacies)
print(result) # [1, 3]