문제 설명
https://school.programmers.co.kr/learn/courses/30/lessons/150370
문제 풀이
처음에는 유효기간을 년, 월, 일 전부 구하려고 애를 먹었는데...
풀이하다 막혀서 문제를 다시 읽어보니까 굳이 정확한 일자를 구할 필요가 없다고 생각했다.
약관의 타입을 찾는 시간을 줄이기 위해, 편하게 찾기 위해 딕셔너리를 사용하였다.
개인정보의 년, 월, 일을 구한 다음에 약관의 유효 기간을 더해주었고,
더한 값이 12의 배수면 12월로 만들어줘야 하기 때문에 if문으로 따로 처리를 해주었다.
유효기간의 연도와 월을 다 구해준 다음에 현재 날짜와 비교하며 제외시켜주었다.
def solution(today, terms, privacies):
answer = []
term = {}
for t in terms:
a, b = t.split()
term[a] = int(b)
for i, p in enumerate(privacies):
a, b = p.split()
year, month, date = list(map(int, a.split('.')))
month += term[b]
if month > 12:
if month % 12 == 0:
year += month // 12 - 1
month = 12
else:
year += month // 12
month %= 12
t = list(map(int, today.split('.')))
if t[0] < year:
continue
if t[1] < month and t[0] == year:
continue
if t[2] < date and t[1] == month and t[0] == year:
continue
answer.append(i+1)
return answer
'알고리즘 > 프로그래머스' 카테고리의 다른 글
[프로그래머스`LV3] 43163 - 단어 변환 (Python) (0) | 2024.02.09 |
---|