CK 023 | Week2 - Day3

This Is Empty.·2021년 9월 29일
0

codekata

목록 보기
23/35
post-thumbnail

문제

s는 여러 괄호들로 이루어진 String 인자입니다. s가 유효한 표현인지 아닌지 true/false로 반환해주세요.

종류는 '(', ')', '[', ']', '{', '}' 으로 총 6개 있습니다. 아래의 경우 유효합니다.

한 번 괄호를 시작했으면, 같은 괄호로 끝내야 한다. 괄호 순서가 맞아야 한다.

예를 들어 아래와 같습니다.

s = "()"
return true

s = "()[]{}"
return true

s = "(]"
return false

s = "([)]" 

내가 작성한 코드


def is_valid(string):
    # 여기에 코드를 작성해주세요.
    start = ["(", "[", "{"]
    end = [")", "]", "}"]
    stack = []

    for i in list(string) :
      if i in start :
        stack.append(i)
        
      else :
        if len(stack) == 0 :
          return False

        if start.index(stack.pop()) != end.index(i) :
          return False          

    return stack == []
  1. 열린 괄호면 스택에 담는다.
  2. 열린 괄호가 아니라면(닫힌 괄호라면)
    2-1. 스택이 비었다면 (처음부터 닫힌 괄호로 시작했다면) False
    2-2. 스택에 담긴 열린괄호의 인덱스와 닫힌 괄호의 인덱스가 다르다면 False
  3. 괄호가 짝이 맞다면 True 아니면 False
profile
Convinced myself, I seek not to convince.

0개의 댓글