문제 접근
() 와 같이 내부가 없는 괄호는 레이저이다.
이외의 괄호들은 쇠막대를 표현한다.
이 부분을 보자.
스택에는 (, (, ( 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
'알고리즘 > 백준' 카테고리의 다른 글
[백준 알고리즘] 7576번: 토마토 (Python / 파이썬) (0) | 2024.01.19 |
---|---|
[백준 알고리즘] 2504번: 괄호의 값 (Python / 파이썬) (0) | 2024.01.18 |
[백준 알고리즘] 5430번: AC ( Python / 파이썬 ) (2) | 2024.01.15 |
[백준 알고리즘] 1021번: 회전하는 큐 (Python / 파이썬) (0) | 2024.01.14 |
[백준 알고리즘] 2493번: 탑 (Python / 파이썬) (3) | 2024.01.10 |