ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 20. Valid Parentheses
    Programming/leetcode 2021. 2. 16. 09:43
    728x90

    오늘부터는 stack, queue 파트를 풀어본다. 

     

    문제 난이도는 쉬움

    들어오는 문자열에서 기호의 쌍이 맞는지 확인하는 문제이다.

     

    ex) {}[]() -> True

         ] -> False

         ][ -> False

    여는 기호가 있고, 닫는 기호가 있는데, stack에는 항상 여는 기호를 넣어두고, 닫힌 기호를 만나면 

    stack의 top과 비교해서 같으면 pop을 하고, 다르면 프로그램을 종료시키면 된다. 

     

    오늘 배운점은 

    not stack이면 empty stack을 의미한다. (빈배열)

    c not in table에서 table은 key값들만 검사를 한다. (value는 values()라는 함수를 이용하면된다.)

    python에서 삼항 연산자 사용은 다음과 같다

    value if 조건 else value

    예를 들어서 a가 3이면 True, 아니면 False는 다음과 같이 사용하면 된다.

    True if a == 3 else False

            stack = []
            table = { ')':'(', '}':'{', ']':'['}
            for c in s:
                if c not in table:
                    stack.append(c)
                else:
                    if not stack:
                        return False
                    if stack and stack.pop() != table[c]:
                        return False
                    # 이 부분 줄여쓰면 다음과 같이 쓸수 있음
                    # if not stack or stack.pop() != table[c]
                    # return False
            # python에서 삼항 연산자 사용하는 방법 
            # return len(stack) == 0 을 해도 같다.
            return True if len(stack) == 0 else False
    

    'Programming > leetcode' 카테고리의 다른 글

    739. Daily Temperatures  (0) 2021.02.17
    316. Remove Duplicate Letters  (0) 2021.02.16
    92. Reverse Linked List II  (0) 2021.02.15
    328. Odd Even Linked List  (0) 2021.02.15
    24. Swap Nodes in Pairs  (0) 2021.02.15
Designed by Tistory.