SueBeen Park

SueBeen Park

Developer. NewBie

© 2021

Dark Mode

백준 1541번: 잃어버린 괄호

문제

세준이는 양수와 +, -, 그리고 괄호를 가지고 길이가 최대 50인 식을 만들었다. 그리고 나서 세준이는 괄호를 모두 지웠다.

그리고 나서 세준이는 괄호를 적절히 쳐서 이 식의 값을 최소로 만들려고 한다.

괄호를 적절히 쳐서 이 식의 값을 최소로 만드는 프로그램을 작성하시오.

입력

첫째 줄에 식이 주어진다. 식은 ‘0’~‘9’, ‘+’, 그리고 ‘-’만으로 이루어져 있고, 가장 처음과 마지막 문자는 숫자이다. 그리고 연속해서 두 개 이상의 연산자가 나타나지 않고, 5자리보다 많이 연속되는 숫자는 없다. 수는 0으로 시작할 수 있다.

출력

첫째 줄에 정답을 출력한다.

str = input().split('-')
num = []

for i in str:
    n = 0
    numStr = i.split('+')
    for j in numStr:
        n += int(j)
    num.append(n)

ans = num[0]
for i in range(1, len(num)):
    ans -= num[i]
print(ans)

코드 설명

주어진 식에서 ‘-‘가 나오면 괄호 시작하고 ‘-‘ 나오기 전까지 괄호를 묶으면 값이 최소화가 되므로 문자열을 ‘-‘로 split한다.

리스트에 담긴 문자열들을 다시 ‘+’로 split한 후에 split된 수들을 더해서 num 리스트에 넣어준다.

처음 받은 숫자에서 num 리스트의 숫자들을 빼주면 식의 값의 최소값을 구할 수 있다.

문제출처 : baekjoon1541