[프로그래머스] 대중소 괄호 짝 맞추기 python

Rapsby·2020년 12월 4일
0

코딩

목록 보기
11/29

문제 설명
여섯 가지 괄호 '(', ')', '{', '}', '[', ']'로 이루어진 문자열이 바르게 닫힌 문자열인지 알아보려 합니다. 바르게 닫힌 문자열이라는 것은

'(' 문자로 열렸으면 반드시 짝지어서 ')' 문자로,
'[' 문자로 열렸으면 반드시 짝지어서 ']' 문자로,
'{' 문자로 열렸으면 반드시 짝지어서 '}' 문자로
닫히는 문자열입니다. 또한, 괄호 쌍 안에는 다른 괄호 쌍이 들어갈 수 있습니다. 예를 들어,

{{}}, ({})[]는 바르게 닫힌 괄호입니다.
[), ]()[, ([())]는 바르게 닫히지 않은 괄호입니다.
문자열 s가 주어졌을 때, 문자열 s가 바르게 닫힌 괄호이면 true를, 그렇지 않으면 false를 return 하는 solution 함수를 완성해 주세요.

제한사항
문자열 s는 (, ), {, }, [, ] 로만 이루어졌습니다.
문자열 s의 길이는 1 이상 40 이하입니다.


  1. stack, 괄호짝 dictionary를 초기화한다.
  2. 문자열에서 탐색하면서 문자가 여는 괄호면 push
  3. stack이 비어 있지 않고, stack의 마지막 원소가 문자와 같은 괄호 쌍이면 진행한다.
  4. 반복문이 끝나고 stack이 비어 있으면 True를 반환한다.
def solution(s):
    d = {
        ')' : '(',
        '}' : '{',
        ']' : '['
    }
    stack = []
    for c in s:
        if c in '({[':
            stack.append(c)
        elif c in ')}]':
            if stack:
                top = stack.pop()
                if d[c] != top:
                    return False
            else:
                return False
    return len(stack) == 0
profile
Good Morning

0개의 댓글