HackerRank - Balanced Brackets

HackerRank의 Balanced Brackets 문제 풀이 입니다.

문제:

{},[],() 세 괄호들의 조합들이 주어졌을 때,
괄호가 완전한지, 불완전한지 확인하는 문제입니다.
완전하면 YES를, 불완전하면 NO를 리턴하면 됩니다.

예시:
{[()]} --> 완전 (return 'YES')
{[(])} --> 불완전 (return 'NO')

코드:

def isBalanced(s):
    # Write your code here
    stack = []
    pair = {'}':'{', ']':'[', ')':'('}
    for ss in s:
        if ss in ['{', '[', '(']:
            stack.append(ss)
        elif len(stack) == 0: return 'NO'
        elif pair[ss] != stack.pop(): return 'NO'
    
    if len(stack) == 0: return 'YES'
    return 'NO'

풀이:

저는 딕셔너리와 스택을 활용해서 풀었습니다.
'[', '{', '(' 와 같은 여는 괄호의 경우 stack에 그대로 푸쉬해줬습니다.
']', '}', ')' 와 같이 닫는 괄호가 나올 경우 stack을 pop하여 짝이 맞는지 안맞는지 비교했습니다.
짝이 맞이 않는 경우 괄호가 불완전한 것이기에 바로 return 'No'를 했습니다.

짝이 모두 맞는 입력에 경우 for문에 나오게되면 stack은 비게 됩니다.
그렇기에 마지막에 stack이 비어 있는지 비어 있지 않은지 한 번 확인해줘야합니다.

좋은 웹페이지 즐겨찾기