문제출처:https://www.acmicpc.net/problem/1541
고려사항
1. 우선 문자열로 입력받은 숫자들과 기호들을 잘 사용 할 수 있게 분리해야한다.
처음에는 replace와 split을 섞어 분리했지만 결과적으로는 기호들도 필요했기에 반복문을 사용하여 작업을 해주었다.
num = input()
nums=[]
temp="" #저장될 값의 임시변수
for i in num:
if i.isdigit(): # 숫자이면 temp문자열에 추가
temp += i
else: # 숫자가 아니라 기호라면 추가해주고 temp 초기화
nums.append(temp)
nums.append(i)
temp=""
nums.append(temp) #마지막은 숫자라고 했기에 마지막 숫자까지 추가
2.하다보니 복잡하게 풀게 되었는데 사실 처음으로 "-"를 만나고나면 뒤의 숫자들은 모두 빼주면 된다.
처음에는 -를 다시 만나면 무언가 해줘야 할 거라고 생각했는데 아니었다. 그냥 다 빼주면 최소값을 만들 수 있다.
plus=[]
minus=[]
q= deque(nums)
flag = True
while q:
target = q.popleft()
if target.isdigit() and flag == True:
plus.append(int(target))
continue
if target == "-":
flag = False
continue
if target.isdigit() and flag == False:
minus.append(int(target))
return sum(plus) - sum(minus)
from collections import deque
def solve():
num = input()
nums=[]
temp=""
for i in num:
if i.isdigit():
temp += i
else:
nums.append(temp)
nums.append(i)
temp=""
nums.append(temp)
plus=[]
minus=[]
q= deque(nums)
flag = True
while q:
target = q.popleft()
if target.isdigit() and flag == True:
plus.append(int(target))
continue
if target == "-":
flag = False
continue
if target.isdigit() and flag == False:
minus.append(int(target))
return sum(plus) - sum(minus)
solve()
def solve():
num = input()
nums=[]
temp=""
for i in num:
if i.isdigit():
temp += i
else:
nums.append(temp)
nums.append(i)
temp=""
nums.append(temp)
plus=[]
minus=[]
flag = True
for i in nums:
if flag == True and i.isdigit():
plus.append(int(i))
elif i == "-":
flag = False
elif flag == False and i.isdigit():
minus.append(int(i))
else:
continue
return print(sum(plus)-sum(minus))
solve()