-풀이
from sys import stdin
N = int(stdin.readline())
k = 0
for i in range(N):
a = stdin.readline()
answer = []
for j in range(len(a)):
if a[j] == '(':
answer.append('(')
elif a[j] == ')':
try:
answer.pop()
except:
k += 1
break
if k == 0 and len(answer) == 0:
print('YES')
elif len(answer) > 0 or k > 0:
print('NO')
k = 0
-풀이 설명
[40~50분 sol] 프로그래머스에서 올바른 괄호 문제를 풀 때 틀린 문제인데, 백준에서 다시 나오게 되어 풀게되었다. 입출력 방식이 프로그래머스랑 달라서 코드도 길어지고 헷갈렸다. 헷갈린 부분은. pop()함수를 쓸 때 answer의 인덱스가 없으면 try except구문에 NO를 출력해주면 되는데 j 반복문을 빠져나와서 i 반복문을 돌 때 answer길이가 0이니까 YES도 출력이 되어 버려서 여기서 시간을 2~30분 정도 잡아먹었다. k라는 변수를 새로 만들어 비교 해줌으로 문제를 해결하였다. 그런데 마지막에 실패라고 떠서 계속 이유를 찾다가 answer리스트를 원래 전역변수로 썼었는데, 실패가 뜨고 i반복문 안에 넣으니까 성공이 떴다. 실행을 해봐도 차이를 모르겠어서 이유가 무엇인지 한 번 알아봐야겠다.
'알고리즘' 카테고리의 다른 글
[프로그래머스][level 2]방금그곡[카카오 2018] (0) | 2021.10.19 |
---|---|
[스택] 백준 10799(쇠막대기) 실버3 (0) | 2021.10.18 |
[스택] 백준 10828 (스택) 실버4 (0) | 2021.10.18 |
[덱] 백준 10866 (덱) 실버4 (0) | 2021.10.18 |
[큐] 백준 10845 (큐) 실버4 (0) | 2021.10.18 |