문제
해결 과정
- 스택을 이용하여 풀기
(
인 경우 stack에 쌓기
)
인 경우
))
-> 막대기 끝 -> answer에 쇠막대기 마지막 끝 조각(1)을 더해주기
()
-> 레이저 -> stack의 갯수를 answer에 더해주기
시행착오
)
나올 때 두 가지의 경우로 나누어서 생각해야하는데 1가지만 생각했음
- 레이저
- 쇠막대기의 끝
import sys
bar = sys.stdin.readline()
stack = []
answer = 0
for i in bar:
if i == ')':
if stack[-1] == '(':
stack.pop()
answer += len(stack)
else:
stack.append(i)
print(answer)
풀이
import sys
bar = sys.stdin.readline()
stack = []
answer = 0
for i in range(len(bar)):
if bar[i] == ')':
if bar[i-1] == '(':
stack.pop()
answer += len(stack)
else:
stack.pop()
answer += 1
else:
stack.append(bar[i])
print(answer)