[BOJ] 잃어버린 괄호

Minsu Han·2022년 10월 20일
0

알고리즘연습

목록 보기
39/105

코드

import sys
input = sys.stdin.readline

expr = input().rstrip()
expr_split = expr.split('-')
ans = 0

for i in range(len(expr_split)):
    e_ans = sum(map(int, expr_split[i].split('+')))
    if i == 0:
        ans += e_ans
    else:
        ans -= e_ans

print(ans)

결과

image


풀이 방법

  • 주어진 식에서 괄호를 사용하여 최소값이 되게 하려면, 음수 뒤에 나오는 양수끼리의 덧셈을 괄호로 묶어야 한다.
  • 즉, '-'가 나오면 괄호를 열고, 다시 '-'가 나오면 그 앞에 괄호를 닫는다.
  • 예를 들어, 3+2-10-2-3+4의 경우 3+2-(10)-(2)-(3+4)가 최소값이다
  • 이를 구현하려면 주어진 식을 '-'을 기준으로 split하여 여러 개의 덧셈식 혹은 단항으로 나눈 다음, 첫 번째 것만 ans에 더하고 나머지는 모두 계산하여 ans에서 빼주면 된다.

profile
기록하기

0개의 댓글