문제
https://www.acmicpc.net/problem/9012
풀이
import sys
input=sys.stdin.readline
n = int(input())
for _ in range(n):
arr = list(input()[:-1])
s = []
for a in arr:
if a=='(':
s.append(a)
else:
if len(s) :s.pop()
else:
print("NO")
break
else:
print("NO") if len(s) else print("YES")
스택을 사용하여 풀었다.
) 가 나오면 스택에 있는 ( 와 비교하면서 풀었다.
- 시간을 줄이기 위해 sys.stdin.readline 선언
- 괄호 문자열을 입력받으면 제일 뒤 개행문자를 제거하고 list로 만들어준다.
- 스택 s 선언
- 리스트로 만든 괄호 문자열을 반복문으로 돌려준다
- ( 가 나오면 s에 더해준다.
- ) 가 나오고 스택에 (이 존재하면 즉, 길이가 1이상이면 스택에 있는 것을 pop()
- 길이가 0이면 유효하지 않은 괄호이기 때문에 NO 출력
- 반복문이 끝났을때 s에 ( 이 있으면 NO 출력, 없으면 YES 출력
느낀점
알고리즘 중에서 스택이 제일 재밌는거같다!ㅎㅎ 왤까 ㅠ 쉬워서 그런걸까
'코딩테스트 > Python' 카테고리의 다른 글
[Python] 백준 #1874 - 스택 수열 (1) | 2021.12.05 |
---|---|
[Python] 백준 #4949 - 균형잡힌 세상 (0) | 2021.12.03 |
[Python] 백준 #10773- 제로 (0) | 2021.12.01 |
[Python] 백준 #10828 - 스택 (0) | 2021.12.01 |
[Python] 백준 #5086 - 배수와 약수 (0) | 2021.12.01 |