알고리즘/백준

[백준 알고리즘] 10799번: 쇠막대기 (Python / 파이썬)

gyujh 2024. 1. 18. 05:15
문제 접근

() 와 같이 내부가 없는 괄호는 레이저이다.

이외의 괄호들은 쇠막대를 표현한다.

이 부분을 보자.

스택에는 (, (, ( 3개가 들어가 있는 상태에서 레이저가 들어온다.

스택에 무언가 들어가 있다는 것은, 쇠막대기의 끝이 아직 발견되지 않았다는 뜻이고

이는 곧 레이저에 의해 영향을 받는다는 의미가 된다.

 

하나의 막대가 잘리면 두개가 된다.

따라 레이저가 들어올 때 현재 스택의 길이만큼 카운트를 추가해주면 된다.

이때 주의사항으로는 쇠막대기의 시작 지점에서 카운트를 1씩 미리 해줘야한다.

 

정답 코드
#10799번: 쇠막대기

import sys

str = sys.stdin.readline().rstrip()
stack = []
count = 0

for i in range(0, len(str)-1):
    brk = str[i]  #괄호
    next_brk = str[i+1]

    if brk == '(':
        if next_brk == ')':
            count += len(stack)
        else:
            stack.append(brk)
            count += 1
    else:
        if len(stack) != 0 and str[i-1] != '(':
            stack.pop()

print(count)

 

 

10799번: 쇠막대기

여러 개의 쇠막대기를 레이저로 절단하려고 한다. 효율적인 작업을 위해서 쇠막대기를 아래에서 위로 겹쳐 놓고, 레이저를 위에서 수직으로 발사하여 쇠막대기들을 자른다. 쇠막대기와 레이저

www.acmicpc.net