문제 풀이 사고방식 - letcode 제2 0 문제: 유효한 괄호

문제 풀이 사고방식 - letcode 제2 0 문제: 유효한 괄호
제목 설명: '(', ')', '{', '}', '[', ']' 만 포함 하 는 문자열 을 지정 하여 문자열 이 유효한 지 판단 합 니 다.유효한 문자열 은 만족 해 야 합 니 다. 왼쪽 괄호 는 같은 유형의 오른쪽 괄호 로 닫 아야 합 니 다.왼쪽 괄호 는 반드시 정확 한 순서 로 닫 아야 한다.빈 문자열 은 유효한 문자열 로 여 겨 질 수 있 습 니 다.예시 1: 입력: "()" 출력: true 예시 2: 입력: "() [] {}" 출력: true 예시 3: 입력: "(]" 출력: false 예시 4: 입력: "([)]" 출력: false 예시 5: 입력: "{[]}"출력: true 본 제 는 사전 스 택 을 추가 하 는 방법 을 사용 합 니 다. 먼저 사전 을 만 듭 니 다. key 는 왼쪽 괄호 이 고 value 는 오른쪽 괄호 입 니 다. 그 다음 에 빈 스 택 을 만 듭 니 다. 그 다음 에 입력 한 문자열 입 니 다. 왼쪽 괄호 라면 스 택 에 들 어 갑 니 다. 오른쪽 괄호 라면 먼저 스 택 안의 요소 가 비어 있 는 지 판단 하고 비어 있 으 면 false 로 돌아 갑 니 다. 그 다음 에 이 괄호 가 스 택 의 스 택 꼭대기 요소 와 있 는 지 판단 합 니 다.대응 하 는 오른쪽 괄호 가 같 습 니 다. 같 으 면 계속 순환 합 니 다. 그렇지 않 으 면 false 로 돌아 갑 니 다. 전체 요 소 를 옮 겨 다 닌 후 스 택 이 비어 있 으 면 true 로 돌아 갑 니 다. 그렇지 않 으 면 false 로 돌아 갑 니 다. 코드 는 다음 과 같 습 니 다.
class Solution:
    def isValid(self, s: str) -> bool:
        dic = {
     '(':')','[':']','{':'}'}
        stack = []
        for i in s:
            if i in dic:
                stack.append(i)
            else:
                if len(stack) == 0:
                    return False
                elif i == dic[stack.pop()]:
                    continue
                else:
                    return False
        if len(stack) == 0:
            return True
        else:
            return False

제출 후 통과.

좋은 웹페이지 즐겨찾기