[알고리즘/백준] 10799: 쇠막대기(python)
처음에는 큐를 이용해서 풀었다. 근데 시간이 너무 오래 걸림... 방법은 '('의 갯수를 저장하고 ()을 만나면 ( 갯수만큼 더해준다. )을 만나면 막대기 한개가 끝난거라 +1을 해준다...
나중에 다른 답을 보니 스택으로 풀려있었다.
큐
from collections import deque
a = deque(list(input().replace('()', ' ')))
cnt, ans = 0, 0
while a:
i = a.popleft()
if i == ' ':
ans += cnt
elif i == '(':
cnt += 1
elif i == ')':
ans += 1
cnt -= 1
print(ans)
스택
a = list(input())
stack = []
ans = 0
for i in range(len(a)):
if a[i] == '(':
stack.append(1)
else:
stack.pop()
if a[i-1] == '(':
ans += len(stack)
else:
ans += 1
print(ans)
Author And Source
이 문제에 관하여([알고리즘/백준] 10799: 쇠막대기(python)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@y7y1h13/알고리즘백준-10799-쇠막대기python저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)