문제
알고리즘
- 반복문을 통해 모든 괄호를 탐색한다.
- "(" 괄호는 스택에 추가한다.
- 이전 괄호가 ")" 라면 막대기에 마지막 부분을 레이저로 자른 것으로 +1 해준다.
- 현재 괄호가 ")"라면 레어저의 앞에 막대기의 개수를 모두 한 번씩 자른 것으로 스택의 길이를 더해준다.
코드
import sys
n = list(map(str, sys.stdin.readline().strip()))
stack = []
res = 0
# 모든 괄호를 탐색한다.
for i in range(len(n)):
if n[i] == "(":
stack.append("(")
# 이전 괄호가 ")"라면 막대기에 마지막 부분을 자른 것으로 +1을 해준다.
elif n[i - 1] == ")":
stack.pop()
res += 1
# 현재 괄호가 ")"라면 레이저의 앞에 막대기의 개수를 한번씩 자른 것으로 스택의 길이를 더해준다.
else:
stack.pop()
res += len(stack)
print(res)
github
'CodingTest > Baekjoon' 카테고리의 다른 글
[baekjoon] 백준 17299번(파이썬): 오등큰수 (0) | 2021.09.10 |
---|---|
[baekjoon] 백준 17298번(파이썬): 오큰수 (0) | 2021.09.09 |
[baekjoon] 백준 10951번(파이썬): A+B - 4 (0) | 2021.09.07 |
[baekjoon] 백준 1110번(파이썬): 더하기 사이클 (0) | 2021.09.07 |
[baekjoon] 백준 17413번(파이썬): 단어 뒤집기 2 (0) | 2021.09.07 |