yha97 2022. 9. 23. 15:24

날짜 : 2022. 09. 23

사용 언어 : python

 

문제

 

 

코드

import sys

ex = str(sys.stdin.readline().split()) # 식 입력
ex = ex[2:-2]
detail = []
plus = []
minus = []

t = str()        
for i in ex:  
    if i != '+' and i != '-': # 숫자인 경우
        t = t + i
    else: # 부호인 경우
        detail.append(int(t)) #숫자 저장
        detail.append(i) # 부호 저장
        t = str()
detail.append(int(t))
#print(detail)
go = 0
for i in detail:
    if i == '-':
        go = 1
    elif i == '+':
        continue
    else :
        if go == 1:
            minus.append(i)
        else:
            plus.append(i)
p = 0
m = 0
#print(plus)
#print(minus)
for i in range(len(plus)):
    p += plus[i]

for i in range(len(minus)):
    m += minus[i]
result = p - m
print(result)
 	       

#print(detail)

풀이를 하면서 어떻게 최소를 구할까, 괄호를 실제로 넣어서 풀어야 하나 생각했다.

 

그러나 생각해보니 괄호는 식의 우선순위를 위해 작성된거고, 조건은 총합의 최소값을 만드는 것이었기 때문에 '-'가 하나만 나오면 그 이후 정수는 무조건 다 절댓값으로 더해서 빼면 되는 것이었다.

 

그래서 detail을 통해 부호와 숫자를 구분하여 저장한 후 plus, minus의 리스트로 분류하여 풀었다.

 

알게된 점

 

 

참고 사이트