새소식

Study/문제풀이

[hackerrank] balanced brackets (Python)

  • -
728x90

 

문제 (링크)

  • 괄호 타입에는 [], {}, ()가 있다
  • balanced bracket이란? 짝이 없는 괄호가 없고, 괄호의 부분집합이 짝이 맞는 괄호안에 들어가있어야 한다
  • [ 가 열려있으면 같은 타입의 괄호로 닫히기 전까지 다른 타입의 닫힘 괄호가 올 수 없다는게 포인트

풀이

def isBalanced(s):
    # Write your code here
    pairs= {'[':']',
            '{':'}',
            '(':')'}
    stacks = []
    for i in s:
        
        if i in pairs:
            stacks.append(pairs[i])
        else:
            try:
                if i != stacks.pop():
                    return "NO"
            except:
                return "NO"
    if len(stacks)==0:
        return "YES"
    else:
        return "NO"

 괄호 문제는 코딩 테스트 단골 주제인 것 같다. 열린 괄호에 대해 닫아줘야하는 괄호를 key-value 쌍으로 묶어주고, 열린 괄호를 받으면 닫혀야하는 괄호를 스택으로 쌓아주다가 닫는 괄호를 마주칠때마다 쌓아준 순서와 맞는지 확인하고, 틀리다면 NO 를 리턴해준다.

 3개의 test case에 대해서만 wrong answer가 뜨길래, 마지막 예외처리를 해주었다. 중요한 이유는 닫힌건 잘 닫혔는데 마지막에 열린 괄호들이 남으면 YES 를 리턴해버렸기 때문! 이거 생각해내느라 오래 걸렸다 

728x90
Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.