https://www.acmicpc.net/problem/10799
문제
내 풀이
import sys
from collections import deque
#입력
input = sys.stdin.readline
str = input().rstrip()
#자료형
stack = deque([])
result = list()
#인덱스 대체제
count = 0
#들어갔다 나갔다하는 stack 활용
for i in str:
if i == ")":
top = stack.pop()
if str[count-1] != ")" and count != 0: # 레이저인경우
if top == "(":
result.append(len(stack))
else: # 쇠막대인 경우
if top == "(":
result.append(1)
else:
stack.append(i)
count += 1
print(sum(result))
해설
총 세개의 자료구조 .
1. 입력받은 괄호 (str)
2. 잘릴 쇠막대기 용 stack
3. 잘린 개수를 담을 result (list)
1. str을 처음부터 차례로 진행
각 ) 마다 stack 의 top 을 pop
"(" 일 경우
stack의 남은 ( 개수 만큼 result에 추가 ( 잘린 쇠막대기 개수)
")" 일 경우, 1. 레이저인지, 2. 쇠막대기의 꼬다리 인지 확인
꼬다리이기에 result에 1 추가
2. result의 모든 원소 더하기 = 답
정답 풀이
#딴건 안봄
출처:
해석
'sw사관학교 정글 2기 > 02 이분탐색, 분할정복, 스택, 큐, 우선순위 큐' 카테고리의 다른 글
[우선순위 큐, 힙] 백준 1658번 가운데를 말해요 with Python3 ★ (0) | 2021.08.17 |
---|---|
[우선순위큐]백준 13334번 철로 with Python3 ★ (0) | 2021.08.17 |
[이분탐색] 백준 8983번 사냥꾼 with Python3 ★ (0) | 2021.08.17 |
[스택] 백준 2812번 크게 만들기 with Python3 (0) | 2021.08.16 |
[스택] 백준 2504번 괄호의 값 with Python3 (0) | 2021.08.16 |
댓글