CS기초/코딩테스트

LeetCode 20 (Easy) Valid Parentheses

오늘의 나1 2021. 3. 23. 01:04
출처: leetcode.com/problems/valid-parentheses/

문제

한글 번역은 아래 더보기를 클릭해주세요.

풀이

class Solution:
    def isValid(self, s: str) -> bool:
        stack = []
        top = ''
        
        for b in s:
            # 열렸으면 push
            # 닫혔으면 탑과 비교하고, 짝이 맞으면 pop 짝이 안 맞으면 true
            
            if b == '(' or b == '[' or b == '{':
                stack.append(b)
                top = b
            elif (b == ')' and top == '(') or (b == ']' and top == '[') or (b == '}' and top == '{'):
                stack.pop()
                top = stack[-1] if len(stack) > 0 else None
            else:
                return False
        
		# 열린 괄호만 있는 경우 예외처리
        return len(stack) == 0

결과