[Algorithm] BOJ 1541, Python


📢質問する
ポテンシャル俊は正数と+,−と括弧で式を構成した.
そして勢俊はかっこを全部削除した.
そして勢俊適はかっこをつけて、この式の値を最小限に抑えようとした.
この式の値を最小にするプログラムを適切なかっこで書いてください.
入力
最初の行には数式があります.式は「0」~「9」、「+」と「-」で構成され、
最初の文字と最後の文字は数字です.
また、2つ以上の演算子が連続して現れず、5桁よりずっと連続した数値はありません.
数はゼロから始まることができます.入力式の長さは50以下です.
しゅつりょく
1行目に正解を出力します.
🐱‍💻コード#コード#
from collections import deque

# 최소값을 구하려면 마이너스를 기준으로 괄호를 만들어줌
# split() 사용하여 구분
expr = input().split('-')
sum = 0

# 첫번째 '-' 연산자 기준으로 첫번째 expr 연산
for i in expr[0].split('+'):
    sum += int(i)

# 첫번째 expr 제외하고 식을 전체 마이너스 연산
for i in expr[1:]:
    for j in i.split('+'):
        sum -= int(j)

print(sum)
に答える
「-」の後の式はすべてかっこで囲まれています.これは、カッコの結果を減算するすべての値の演算になります.
すなわち,「-」以前の和,および出現後の和を除くと,結果値は常に最小となる.
🤔レビュー
	최소값을 구하기위해서 얼마나 많은 삽질을 했는지 모르겠다..
  	무작정 deque를 사용하겠다고 생각하고 사용했지만 문제가 풀리지 않았다.
    	코드도 너무 길어지고.. 
        >> 처음 '-' 이후에 '-'를 만나기 전까지 분리하여 
           따로 '+' 계산 후에 '-' 연산을 해줄 생각이였지만,실패했다. 
        너무 어렵게 접근을 했던걸까? 문자열로 분리하여 계산하니까 생각했던 것과 같이 풀렸다.
  	조금만 더 쉽게 접근을 해보도록 하자 :)