세준이가 양수, +, -, 괄호로 식을 만드는데 이 식의 값을 최소로 만드는 것이 목적이다.
1. 55-50+40 일 때
2. 10+20+30+40 일 때
3. 00009-00009 일 때
새로운 케이스 10-20+30-40 일 때
calculate = list(input())
answer = []
num = ""
while len(calculate) > 0:
word = calculate.pop(0)
if word == "+":
answer.append(int(num))
num = ""
elif word == "-":
answer.append(int(num))
num = ""
answer.append("-")
else:
num += word
answer.append(int(num))
ans = answer[0]
minus = False
if '-' not in answer:
print(sum(answer))
else:
for i in answer[1:]:
if i == "-":
minus = True
continue
if minus:
ans -= i
else:
ans += i
print(ans)
a = input().split('-')
num = []
for i in a:
cnt = 0
s = i.split('+')
for j in s:
cnt += int(j)
num.append(cnt)
n = num[0]
for i in range(1, len(num)):
n -= num[i]
print(n)
둘다 메모리나 시간이 각각 30864KB, 68ms로 같았다.
1. 처음 방식은 +를 없애고 -만 남겼을 때이고
2. 두번째 방식은 -를 없애고 +를 기준으로 토큰화하여 문제를 풀었다.
두번째 방식이 O(N^2)로 더 오래 걸릴 것 같았는데 시간이 똑같아서 살펴보니 식의 길이가 50 이하라서 그런건가 싶었다.