Algorithm/Problems

99클럽 코테 스터디 7일차 TIL + 스택

공부좀하시졍 2025. 4. 8. 22:47

https://www.acmicpc.net/problem/10799

# 10799 쇠막대기

import sys
input = sys.stdin.readline

bars = input().strip()
stack = []
answer = 0

for i in range(len(bars)):
    if bars[i] == '(':
        stack.append('(')
    else:
        stack.pop()
        if bars[i-1] == '(': # ) 직전 괄호가 (면 레이저
            answer += len(stack)
        else: # ) 직전 괄호가 )면 막대기의 끝
            answer += 1

print(answer)

 

  • 스택 자료구조의 특징을 이용했다.
  • 열린괄호를 만나면 stack에 push 하고 닫힌괄호를 만나면 stack에서 pop 한다.
    • 이때 입력받은 문자열 중 닫힌괄호의 직전괄호가 ( 면 레이저 이므로 stack에 남아있는 개수를 더해준다.
    • 직전괄호가 ) 면 막대기의 끝이므로 1을 더해준다.
  • 처음 괄호를 입력받을 때 sys.stdin.readline으로 하면 뒤에 공백이 들어와 인덱스에러가 난다.
    • strip()함수로 공백을 제거해주거나 그냥 input함수를 사용해야 한다.