728x90
class ArrayStack:
def __init__(self):
self.data = []
def size(self):
return len(self.data)
def isEmpty(self):
return self.size() == 0
def push(self, item):
self.data.append(item)
def pop(self):
return self.data.pop()
def peek(self):
return self.data[-1]
def solution(expr):
match = {
')': '(',
'}': '{',
']': '['
}
S = ArrayStack()
for c in expr:
if c in '({[':
S.push(c)
elif c in match:
if S.size()==0:
return False
else:
t = S.pop()
if t != match[c]:
return False
return S.size()==0
스택하면 제일 대표적인 문제 valid parenthesis 여부
LeetCode 에서 풀었던 문제
[LeetCode] Valid Parentheses 파이썬 (stack, empty stack)
class Solution: def isValid(self, s: str) -> bool: stack = [] for c in s: if len(stack) == 0: # 최초에 stack이 비었더라도 loop진행중 stack이 비워지면 다시 채워넣기 stack.append(c) elif stack[-1] ==..
ygseo.tistory.com
class Solution:
def isValid(self, s: str) -> bool:
stack = []
for c in s:
if len(stack) == 0: # 최초에 stack이 비었더라도 loop진행중 stack이 비워지면 다시 채워넣기
stack.append(c)
elif stack[-1] == "{" and c == "}":
stack.pop()
elif stack[-1] == "[" and c == "]":
stack.pop()
elif stack[-1] == "(" and c == ")":
stack.pop()
else:
stack.append(c)
if len(stack) == 0:
return True
else:
return False
프로그래머스에도 있다.
코딩테스트 연습 - 올바른 괄호
괄호가 바르게 짝지어졌다는 것은 '(' 문자로 열렸으면 반드시 짝지어서 ')' 문자로 닫혀야 한다는 뜻입니다. 예를 들어 "()()" 또는 "(())()" 는 올바른 괄호입니다. ")()(" 또는 "(()(" 는 올바르지 않은
programmers.co.kr
풀이:
def solution(s):
answer = True
stack = []
for i in s:
if i == '(':
stack.append(i)
else:
try: stack.pop()
except: return False
if len(stack) == 0: return True
else: return False
728x90
'DC 2' 카테고리의 다른 글
[자료구조] 운송 트럭 파이썬 (dict) (0) | 2021.04.20 |
---|---|
[자료구조] 나머지 한 점 파이썬 (0) | 2021.04.20 |
[자료구조] Doubly Linked List 구현 (0) | 2021.04.20 |
[자료구조] Linked List 클래스 구현 (0) | 2021.04.20 |
[자료구조] (singly) Linked List 파이썬 (0) | 2021.04.20 |
댓글