아이디어
언제 조각이 생기는가?
1) 레이저를 지나갈때 >> 끝점이 아닌 막대기의 수만큼의 조각이 생긴다 (이건 스택에 들어있는개수로 구하면 됨)
2) 막대기의 끝점일때 >> 끝점인 막대기 조각만 1개 생긴다.
위 2가지 경우를 기준으로 나눠 조각을 카운트해준다.
주의할 점은 닫힌 괄호가 나왔을 때, 막대기의 끝점인지, 레이저인지 판단할 필요가 있다.
해결
import sys
from collections import deque
input = sys.stdin.readline
queue = deque()
string = input().rstrip()
cnt=0
for i in range(len(string)):
if string[i]==')':
if string[i-1]==")": #레이저가 아니고 한 막대기의 끝점이면
cnt+=1 #그 막대기 조각만 하나 더 생김
queue.pop()
else: #레이저면
queue.pop()
cnt+=len(queue) #스택에 남아있는 개수만큼 조각이 생김
else: #열린괄호면 스택에 추가
queue.append(string[i])
print(cnt)
'문제 풀이 > 백준' 카테고리의 다른 글
[백준] 17478번 재귀함수가 뭔가요 (1) | 2024.07.05 |
---|---|
[백준] 17413번 단어 뒤집기2 (0) | 2024.07.04 |
[백준] 1193번 분수찾기 (0) | 2024.07.02 |
[백준] 2217번 로프 (0) | 2024.07.01 |
[백준] 1541번 잃어버린 괄호 (0) | 2024.07.01 |
댓글