이런식으로 년월일 계산하다가 .. 손해봤다 .. 그마져도 틀렸다 .. 그냥 일로 모두 바꿔서 비교가 훨씬 쉽다. 일 수가 28일로 정해져 있기 때문에 !
def solution(today, terms, privacies):
answer = []
today = [int(i) for i in today.split(".")]
term, privacy = {}, {}
for i in terms:
term[i.split(" ")[0]] = int(i.split(" ")[1])
for i in privacies:
privacy[i.split(" ")[0]] = i.split(" ")[1]
for j, i in enumerate(privacy):
tmp = [int(idx) for idx in i.split(".")]
tmp[1] += term[privacy[i]]
y = tmp[0]
m = tmp[1]
d = tmp[2]-1
if d > 28:
m += d // 28
d = d % 28
if d == 0:
m -= 1
d = 28
if m == 0:
y -= 1
m = 12
if m > 12:
y += m // 12
m = m % 12
if m == 0:
m = 12
y -= 1
if today[0] > y:
answer.append(j+1)
continue
else:
if today[1] > m:
answer.append(j+1)
continue
else:
if today[2] > d:
answer.append(j+1)
return answer
< 수정 >
def solution(today, terms, privacies):
answer = []
today = [int(i) for i in today.split(".")]
today_value = (today[0] * 12 * 28) + (today[1] * 28) + today[2]
term = {}
for i in terms:
term[i.split(" ")[0]] = int(i.split(" ")[1]) * 28
for i in range(len(privacies)):
x = privacies[i].split(" ") # x[0] : 날짜, x[1] : 약관 알파벳
y = [int(j) for j in x[0].split(".")]
value = (y[0] * 12 * 28) + (y[1] * 28) + term[x[1]] + y[2]
if today_value >= value:
answer.append(i+1)
return answer