CS 공부/백준 - Python
[백준 9012번] 괄호 : Stack(스택)/Queue(큐) - 파이썬(Python)
nanocat
2024. 2. 26. 19:31
https://www.acmicpc.net/problem/9012
9012번: 괄호
괄호 문자열(Parenthesis String, PS)은 두 개의 괄호 기호인 ‘(’ 와 ‘)’ 만으로 구성되어 있는 문자열이다. 그 중에서 괄호의 모양이 바르게 구성된 문자열을 올바른 괄호 문자열(Valid PS, VPS)이라고
www.acmicpc.net
이번 문제는 제가 1학년 때 과제로 풀어봤었던 비슷한 문제입니다. 뭣모르고 풀었던, 심지어 자바로 풀어봤던 문제라 스택이나 큐를 쓰는건지도 몰랐었죠... 나중에 조교님께서 정답 코드를 공개해주시고서야 알았습니다.
휴학을 하면서 다른 공부를 하다가 먹고 놀면서 백수 비슷한 삶을 누리다가 복학 준비 기념으로 백준에서 문제를 하나 풀어보려니 비슷한 문제를 찾아서 파이썬으로 풀어보았습니다.
스택 ver.
def main():
t = int(input())
for _ in range(t):
ps = input()
stack = []
for c in ps:
if c == '(':
stack.append('(')
elif c == ')':
if stack == []:
stack.append("NO")
break
else:
stack.pop()
if stack == []:
print('YES')
else:
print('NO')
if __name__ == '__main__':
main()
큐 ver.
def main():
t = int(input())
for _ in range(t):
ps = input()
queue = []
for c in ps:
if c == '(':
queue.append('(')
elif c == ')':
if queue == []:
queue.append("NO")
break
else:
queue.pop(0)
if queue == []:
print('YES')
else:
print('NO')
if __name__ == '__main__':
main()
스택으로 푸나 큐로 푸나 별차이 없습니다만 파이썬 특성상 위 코드들 중에서는 스택으로 푸는게 낫습니다.