본문 바로가기
코딩테스트/Python

[python 백준 1541] 잃어버린 괄호

by nahkim 2023. 2. 2.

📜 접근 방법

주어진 식에 적절하게 괄호를 넣어야한다.

 

조건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)