728x90
반응형
풀기 전 생각해보기😮
- stack 문항
- 각각의 경우를 따져서 풀 수 있다
풀이🛫
# 스택
# 모든 경우대로 조건문을 나열
arr = list(input())
stack = []
cnt = 0
for i in range(len(arr)):
if len(stack) == 0 and arr[i] == '(': # stack이 아직 만들어지지 않았을 경우
stack.append('(')
else: # stack이 존재할 때
# 이전에 들어온 값과 현재 입력되는 값을 비교
# 모든 경우의 수는 4가지 밖에 되지 않음
if arr[i-1] == '(' and arr[i] == '(': # case1
stack.append('(')
elif arr[i-1] == '(' and arr[i] == ')': # case2
stack.pop()
cnt += len(stack)
elif arr[i-1] == ')' and arr[i] == ')': # case3
cnt += 1
stack.pop()
else: # arr[i-1] == ')' and arr[i] = '(' # case4
stack.append('(')
print(cnt)
핵심 정리🎁
- 가장 최근에 입력된 값과, 현재 입력하려는 값을 가지고 모든 경우를 구현할 수 있기 때문에 stack 자료구조를 떠올렸다
링크💎
https://www.acmicpc.net/problem/10799
'Algorithm Study > Python' 카테고리의 다른 글
[백준 파이썬] #1406. 에디터 (0) | 2022.12.10 |
---|---|
[백준 파이썬] #2430. AC (0) | 2022.12.09 |
[백준 파이썬] #2493. 탑 (0) | 2022.12.08 |
[백준 파이썬] #2636. 치즈 (1) | 2022.11.08 |
[백준 파이썬] #2146. 다리만들기 (0) | 2022.11.06 |