문제
https://www.acmicpc.net/problem/4949
코드
import sys
class Stack:
def __init__(self):
self.stk = []
def append(self, value):
self.stk.append(value)
def pop(self):
return self.stk.pop()
def peek(self):
if len(self.stk) <= 0:
return -1
return self.stk[-1]
def size(self):
return len(self.stk)
while True:
ss = Stack()
cnt = 0
string = sys.stdin.readline().rstrip()
if string == '.':
break
for i in string:
if i == '(' or i == '[':
ss.append(i)
elif i == ']':
if ss.peek() == '[':
ss.pop()
else:
cnt += 1
elif i == ')':
if ss.peek() == '(':
ss.pop()
else:
cnt += 1
if ss.size() == 0 and cnt == 0:
print('yes')
else:
print('no')
스택에 왼쪽 소괄호, 대괄호를 넣어주고 오른쪽 괄호가 들어왔을 때
스택의 top과 짝이 맞으면 pop을 하고아니면 cnt(카운트)에 1을 더하게 했습니다.
그래서 스택의 size도 0이고 cnt가 0일 때만 yes를 출력해줍니다.
'IT > 알고리즘' 카테고리의 다른 글
백준 - 5430번 (0) | 2020.11.13 |
---|---|
알고리즘 - 큐(queue) (0) | 2020.11.12 |
백준 - 1406번 (0) | 2020.11.09 |
백준 - 9012번 (0) | 2020.11.07 |
알고리즘 - 스택(deque) (0) | 2020.11.06 |
댓글