Computer Science/자료구조
백준 10799번 쇠막대기 - 파이썬
somm12
2022. 7. 15. 09:54
10799번: 쇠막대기
여러 개의 쇠막대기를 레이저로 절단하려고 한다. 효율적인 작업을 위해서 쇠막대기를 아래에서 위로 겹쳐 놓고, 레이저를 위에서 수직으로 발사하여 쇠막대기들을 자른다. 쇠막대기와 레이저
www.acmicpc.net
여는 괄호는 stack에 추가, 만일 닫는 괄호 바로 앞에 여는 괄호가 있다면 레이저를 만나는 것이므로, 레이저의 여괄호는 pop하고
스택에 남은 여괄호 즉, 막대기 개수를 센다.
그 이후 닫는 괄호는 막대기가 잘려진 뒷부분 +1 을 해준다.
import sys
arr = sys.stdin.readline().strip()
stack = []
ans = 0
for i in range(len(arr)):
if arr[i] == '(':
stack.append(arr[i])
else:
stack.pop()
if arr[i - 1] == '(':
ans += len(stack)
else:
ans += 1
print(ans)