본문 바로가기

Programming [Python]/백준 알고리즘 솔루션

#280 백준 파이썬 [10799] 쇠막대기 - 스택

https://www.acmicpc.net/problem/10799

 

SOLUTION

스택을 이용해서 풀 수 있다.

1. (이 나오면 스택에 넣는다.

2. ()이 나오면 현재 스택에 있는 ( 수만큼 정답에 더해준다. 

3. )이 나오면 스택의 (를 pop하고 정답에 1을 더해준다.

PYTHON CODE

bar_razor = list(input())
answer = 0
stack = []

for i in range(len(bar_razor)):
    if bar_razor[i] == '(': #스택 쌓기
        stack.append('(')
        
    else:
        if bar_razor[i-1] == '(': #()라면 (를 pop하고 현재 스택에 들어있는 ( 수만큼 값을 더해준다.
            stack.pop()
            answer += len(stack)
            
        else:
            stack.pop() 
            answer += 1 #끄트머리 막대기 부분을 더해준다

print(answer)