전공/백준
1541
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의 리스트로 분류하여 풀었다.
알게된 점
-
참고 사이트
-