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)
'Programming [Python] > 백준 알고리즘 솔루션' 카테고리의 다른 글
#282 백준 파이썬 [2206] 벽 부수고 일어나기 - BFS (0) | 2019.12.13 |
---|---|
#281 백준 파이썬 [16680] 안수빈수 (0) | 2019.12.13 |
#279 백준 파이썬 [16678] 모독 (0) | 2019.12.12 |
#278 백준 파이썬 [16677] 악마 게임 (0) | 2019.12.12 |
#277 백준 파이썬 [16676] 근우의 다이어리 꾸미기 (0) | 2019.12.11 |