코딩테스트/Python
[python 백준 1541] 잃어버린 괄호
nahkim
2023. 2. 2. 13:00
📜 접근 방법
주어진 식에 적절하게 괄호를 넣어야한다.
조건1. 식의 값을 최소로 만들어야한다.
조건2. 식은 0~9, +, - 로만 이루어져 있다.
식의 값을 최소로 만들기 위해선 -하는 값을 최대로 만들어주면 된다.
그러기 위해선, -를 기준으로 그 다음 -가 나오기 전까지, 뒤에 +인 값들을 다 더한 후 빼주면 최소값이 된다.
즉, 괄호는 -하는 부분부터 그다음 -하기 전까지 넣어주면 된다.
ex)
괄호 전 : 35+35-34+21-46+34+43-45
괄호 후 : 35+35-(34+21)-(46+34+43)-(45)
문제 푼 방법
1. 식을 "-"를 기준으로 나누어준다.
2. 나눈 것을 "+"가 있을 경우 모두 더한 후 빼준다.
3. 반복
그러나 가장 처음 문자는 숫자이기에 "+"해줘야하므로 if문으로 따로 빼줬다.
❌ 실패 이유
맨 처음 값의 경우 +로 나오기 때문에(문제 조건이 그렇다.) 그 부분을 따로 빼줘야했다.
✅ 정답 코드
import sys
def plus_split(form):
res = 0
num_list = []
num_list = form.split("+")
for i in range(len(num_list)):
res += int(num_list[i])
return res
s = sys.stdin.readline().strip()
res = 0
form = []
form = s.split("-")
for i in range(len(form)):
tmp = plus_split(form[i])
if i == 0:
res += tmp
else:
res -= tmp
print(res)