https://www.acmicpc.net/problem/1541
1541번: 잃어버린 괄호
첫째 줄에 식이 주어진다. 식은 ‘0’~‘9’, ‘+’, 그리고 ‘-’만으로 이루어져 있고, 가장 처음과 마지막 문자는 숫자이다. 그리고 연속해서 두 개 이상의 연산자가 나타나지 않고, 5자리보다
www.acmicpc.net
문제를 간단하게 설명하자면 세준이가 바보같이 문제를 잘 만들어놓고 괄호를 지워버렸다.
이 문제에서는 무조건 숫자와 연산자가 번갈아가면서 나오기 때문에 특수한 예외상황을 신경쓰지 않아도 되었다.
그러면 '-' 연산자가 나오면 최대한 크게 묶어서 처리를 해주면 되겠다라고 생각이 들어서 스택을 사용해 뒤에서부터 수를 계속 더하다가 '-'가 나오면 minus 변수에 추가를 해주고 '+' 연산자까지의 부분은 plus 변수에 더해준 다음 맨 마지막에 plus - minus로 결과를 출력해주었다.
input_str = input()
stack = list(input_str)
result = 0
plus = 0
minus = 0
oper = ["+", "-"]
tmp_str = ""
while stack:
tmp = stack.pop()
if not tmp in oper:
tmp_str = tmp + tmp_str
else:
if tmp == "+":
plus += int(tmp_str)
tmp_str = ""
else:
plus += int(tmp_str)
minus += plus
plus = 0
tmp_str = ""
if tmp_str != "": plus += int(tmp_str)
print(plus - minus)
'알고리즘' 카테고리의 다른 글
최소 스패닝(신장) 트리 (Minimum Spanning Tree) (0) | 2025.02.14 |
---|---|
다익스트라 (Dijkstra) (0) | 2025.02.14 |
위상 정렬 (Topological Sorting) (0) | 2025.02.01 |