https://www.acmicpc.net/problem/1541
괄호를 이용해 최솟값을 구하기 위해선 - 뒤에 있는 양수를 모두 하나로 묶어 계산하면 음수 값이 최대가 된다.
ex) 을 괄호 없이 계산하면 이 나오지만 - 뒤에 있는 양수를 하나로 묶어 계산(괄호를 사용하여)하면, 이 되므로 결과는 이 나오게 된다.
이러한 방식을 이용하기 위해서 -를 기준으로 입력받은 문장을 나누어 주면 된다.
s = input().split('-')
나누어진 문장을 가지고 이번엔 +를 기준으로 각 값을 나눈 후 더하여준다.
sub = []
for i in s:
cnt = 0
for j in i.split('+'):
cnt += int(j)
sub.append(cnt)
더한 값을 결과를 구할 배열에 저장하여 처음 값을 제외한 나머지 값을 다 빼주면 된다.
res = sub[0]
for r in res[1:]:
res -= r
import sys
input = sys.stdin.readline
s = input().strip().split('-')
sub = []
for i in s:
cnt = 0
for j in i.split('+'):
cnt += int(j)
sub.append(cnt)
res = sub[0]
for r in sub[1:]:
res -= r
print(res)
더 간단한 풀이가 있길래 참고하면 좋을 것 같아 첨부합니다.
푸르고 개발 블로그
import sys
input = sys.stdin.readline
n = input().strip().split('-')
res = 0
for i in n[0].split('+'):
res += int(i)
for i in n[1:]:
for j in i.split('+'):
res -= int(j)
print(res)