반응형
코드 작성
n = int(input())
for _ in range(n):
k = list(input())
stack=[]
for i in k:
if i == '(':
stack.append(i)
elif i==')':
if stack:
stack.pop()
else:
print('NO')
break
else:
if stack:
print('NO')
else:
print('YES')
코드 풀이
n = int(input())
for _ in range(n):
k = list(input())
stack=[] # 스택은 for문 안에 있어야 계속 초기화하면서 사용할 수 있음
for i in k:
if i == '(':
stack.append(i)
elif i==')':
if stack: #스택이 뭔가 있을경우(→len(stack)!= 0)
stack.pop()
else:
print('NO')
break
else: #for문에 break가 되면 아래의 if,else값이 실행이 안되기 때문에 for - break - else로 작성
if stack:
print('NO')
else:
print('YES')
#1
괄호 ‘(’ 또는 ‘)’ 의 리스트를 입력 받는다
#2
(1) ‘(’ 가 입력 됐을 때는 스택에 추가한다.
(2) ‘)’ 가 입력 됐을 때는 스택에서 ‘(’를 빼낸다. 만약 스택이 비어있다면 'NO' 를 출력하고 for문을 종료한다.
#3
(3) 리스트 마지막 값이 입력 된 후 스택에 남아있다면 NO, 그렇지 않으면 YES를 출력한다.
반응형
'코딩 > Python' 카테고리의 다른 글
[Python] 백준 1676 팩토리얼 0의 개수 (0) | 2022.11.18 |
---|---|
[Python] 과제 안 내신 분..? (0) | 2022.11.18 |
[Python] 백준 4948 베르트랑 공준 (0) | 2022.11.17 |
[Python] 백준 2562 최댓값 (0) | 2022.11.16 |
[Python] 백준 10818 최소, 최대 (0) | 2022.11.16 |