소소한 컴퓨터 이야기

유효한 괄호

by Cori

문제

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

 

· 입출력 예 

s return
()[]{} True

풀이

1. 스택 일치 여부 판별

-> 파이썬 리스트는 스택 연산인 푸시와 팝이 O(1)에 동작한다.

def isValid(s: str) -> bool: 
    stack = []
    
    table = {
        ')':'(',
        '}':'{',
        ']':'['
    }
    
    for char in s:
        if char not in table:
            stack.append(char)
        elif not stack or table[char] != stack.pop():
            return False 
   return len(stack) == 0

매핑 테이블을 만들어놓고, 매핑 테이블에 존재하지 않으면 푸시하고, 팝했을 때 결과가 일치하지 않으면 False를 리턴한다. 또한, 스택이 비어있는 상태에서 pop 연산을 시도할 경우 오류가 발생하기 때문에 이에 대한 예외처리도 구현한다.

 

Bt 해당 코드는 입력받은 문자열이 '[ ( ] { ) }'와 같이 구성된 경우 False를 return하는 단점이 있다. 

'CS > Coding Test' 카테고리의 다른 글

섬의 개수  (0) 2021.10.05
일일 온도  (0) 2021.10.04
두 수의 합  (0) 2021.10.02
가장 긴 팰린드롬 부분 문자열  (0) 2021.10.01
Hashing  (0) 2021.10.01

블로그의 정보

코딩하는 오리

Cori

활동하기