Leet code 20. Valid Parentheses

문제

문제 풀이 방법

  • stack을 이용



class Solution:
    def isValid(self, s: str) -> bool:
        
        
        스택을 이용 안했을때 코드 엄청 복잡하고 틀림..
        # answer = []
        # if len(s) == 2:
        #     if s[0] == '(' and s[1] == ')':
        #         return True
        #     if s[0] == '[' and s[1] == ']':
        #         return True
        #     if s[0] == '{' and s[1] == '}':
        #         return True
        #     else:
        #         return False
        # for i in range(len(s)):
        #     if i != len(s)-1:
        #         next = s[i+1]
        #         if s[i] == '(' and next == ")":
        #             answer.append(s[i])
        #             answer.append(next)
        #         elif s[i] == '[' and next == "]":
        #             answer.append(s[i])
        #             answer.append(next)
        #         elif s[i] == '{' and next == "}":
        #             answer.append(s[i])
        #             answer.append(next)
        #     if s[i] == s[len(s)-1] and i != len(s)-2 and i != len(s)-1:
        #         answer.append(s[i])
        #         answer.append(s[len(s)-1])
        # print(answer)    
        # if len(answer) % 2 == 0 and len(answer) != 0 and len(answer) == len(s):
        #     return True
        # else:
        #     return False
        
        
        
        
        
        
        
        스택을 이용한 코드 
        lst = ['{([']
        stack = []
        for i in s:
            # '{([' 안에 i가 들어있다면 stack에 append
            if i in lst[0]:
                stack.append(i)
            else:
                # 스택에 아무것도 없다면 False리턴 
                if not stack:
                    return False
                # 스택에 맨마지막 문자를 꺼냄
                curr = stack.pop()
                # 꺼낸 curr하고 i를 비교 다르면 False
                if i == ')':
                    if curr != "(":
                        return False    
                if i == ']':
                    if curr != "[":
                        return False
                if i == '}':
                    if curr != "{":
                        return False
                        
        if len(s) == 1 or len(stack) != 0:
            return False
        return True
        

좋은 웹페이지 즐겨찾기