#쇠막대기
s= input()
stack = []
cnt = 0
for i in range(len(s)):
if s[i] == "(":
stack.append(s[i])
else:
#어차피 )인 경우엔 pop해주어야 한다.
stack.pop()
if s[i-1] != ')':
cnt += len(stack)
else:
cnt += 1
print(cnt)
- 잘 살펴보면 레이저로 끊는 부분은 해당 막대기 갯수만큼 쌓인다. 이는 stack에 쌓인 "(" 여는 괄호의 갯수와 동일하다.
- ")" 뒤에 또 닫는 괄호가 올 땐 해당 막대기의 끝 부분을 의미한다. 이때는 더이상 막대기가 진행되지 않으므로 끄트머리 1개를 추가해주는 식이다.
'문제풀이 > 백준(Boj) 문제풀이' 카테고리의 다른 글
[백준][스택] - 1935. 후위 표기식2(파이썬) (0) | 2022.07.17 |
---|---|
[백준][스택] - 1918. 후위 표기식(파이썬) (0) | 2022.07.17 |
[백준][스택] - 2493. 탑 (0) | 2022.07.15 |
[백준][이분 탐색] - 10815. 숫자 카드 (0) | 2022.07.08 |
[백준][이분 탐색] - 1654. 랜선 자르기 (0) | 2022.07.08 |