[백준] 1541 : 잃어버린 괄호 - Python

Chooooo·2024년 4월 20일
0

알고리즘/백준

목록 보기
166/182

문제

주어진 수식 괄호 추가하여 최소로 만들기

내 코드

import sys
sys.stdin = open("input.txt", "rt")

# 양수와 +,- 그리고 괄호를 가지고 식을 만들기
# 그리고 괄호 모두 지우기
# - 부호를 기준으로 분리

oper = input()
# print(data)
res = 0
num = 0
stack = []
data = []
for x in oper:
    if x == "-" or x == "+": # 연산자
        data.append(num)
        num = 0 # 초기화
        stack.append(x)
    else:
        num = num * 10 + int(x)
else: # 끝까지 돌면 결국 숫자라서
    data.append(num)

res = 0
now = data.pop()
while stack:
    oper = stack.pop() # 연산자 꺼내서
    num = data.pop() # 마지막 값 꺼내서
    if oper == "+":
        now += num
    else: # 음수면 이제 전환
        res -= now
        now = num # 마지막으로 뽑은 거 기억
else:
    res += now # 마지막에 더해주기
print(res)

코멘트

이 문제의 핵심은 -연산자 기준으로 수식 분리하는 것.
(-) 연산자 기준으로 분리된 수식에서는 + 연산자로 연결된 숫자들을 모두 더해주고 이후에 -연산자로 빼주면 최소값을 얻을 수 있다.

profile
back-end, 지속 성장 가능한 개발자를 향하여

0개의 댓글