백준 9012번
최종 제출 코드
import sys
def solution(input_array):
stack = []
for i in range(len(input_array)):
if input_array[i]=='(':
stack.append(input_array[i])
else:
if len(stack) > 0:
if stack[len(stack)-1] == '(':
stack.pop()
else:
return "NO"
else:
return "NO"
if len(stack) > 0: return "NO"
return "YES"
input = sys.stdin.readline
T = int(input().rstrip())
for i in range(T):
print(solution(input().rstrip()))
풀이
- 입력이
(일 경우 무조건 스택에 push
- 입력이
)일 경우
1) 스택에 원소가 있음 & 스택의 top 원소가 (임 ⇒ pop
2) 스택에 원소가 있음 & 스택의 top 원소가 (가 아님 ⇒ NO 리턴
3) 스택에 원소가 없음 ⇒ NO 리턴
- 입력을 다 돌았는데 스택에 원소가 남음 ⇒
NO 리턴
수정 코드
import sys
def solution(input_array):
stack = []
for i in range(len(input_array)):
if input_array[i]=='(':
stack.append(input_array[i])
else:
if len(stack) > 0:
stack.pop()
else:
return "NO"
if len(stack) > 0: return "NO"
return "YES"
input = sys.stdin.readline
T = int(input().rstrip())
for i in range(T):
print(solution(input().rstrip()))
수정
- 생각해보니 1. 1)과 2)를 나눌 필요가 없음
⇒ 스택에 원소가 있으면 그 원소는 무조건 (이기 때문임
❓ 애초에 )이면 원소에 push를 안함...