자료구조와 알고리즘/🥑알고리즘

[알고리즘][스택 & 큐] - 1. 유효한 괄호

얄루몬 2022. 3. 1. 21:55

 

📖이 포스팅은 '파이썬 알고리즘 인터뷰 - 박상길님'을 보고 작성되었습니다.


😎문제 : https://leetcode.com/problems/valid-parentheses/

괄호로 된 입력값이 올바른지 판별하라.


class Solution:
    def isValid(self, s: str) -> bool:
        stack = []
        table = {
            ']':'[',
            ')': '(',
            '}': '{',
        }
        
        for i in s:
            if i not in table:
                stack.append(i)
            elif not stack or table[i] != stack.pop():
                return False
        return len(stack) == 0
  • 매핑을 이용해서 테이블이라는 딕셔너리를 통해 (,[,{ 는 stack에 넣어주고 ),],}를 만날 때 pop해주며 결과적으로 stack에 남은 요소가 없을 때 true 값을 돌려주는 구조로 코드가 구현 되어있다.
  • 이때 스택이 비어있는지 안 비어있는지 역시 판단해주며 True False를 결정하게 해준다.
  • 중요! 딕셔너리는 키를 가지고 데이터를 찾기 때문에 [ ( { 의 경우엔

 

매핑(mapping)은 키(key) 역할을 하는 데이터와 값(value) 역할을 하는 데이터를 하나씩 짝지어 저장하는 데이터 구조다.