주어진 문자열이 완전한 괄호 형태인지 판별하고 알맞은 출력값을 내야 한다.
완전한 괄호 형태면 “YES”, 그렇지 않으면 “NO”를 출력하기
4-1) stack 안에 “(”이 남아있다면 “NO” 출력
4-2) stack이 비어있다면 “YES” 출력
import sys
N = int(sys.stdin.readline())
for _ in range(N):
stack = []
vps = sys.stdin.readline().strip()
for i in vps:
if i == "(":
stack.append(i)
else:
if stack:
stack.pop()
else:
print("NO")
break
else:
if stack:
print("NO")
else:
print("YES")
테스트 케이스의 개수를 N, 주어진 테스트 케이스 문자열의 최대 길이를 L이라 치면,
시간복잡도는 O(N*L) 이다.
알고리즘 설계의 4번 부분은 배제하고 풀어 옳지 않은 답을 출력함.
하나의 테스트 케이스에 대한 반복문이 종료됐다면 stack이 비어져 있는 지 여부를 한 번 더 고려해 봐야함을 깨닫고 알고리즘 설계에 4번 부분을 추가해 통과할 수 있었다.