[Python] leetcode | 20. Valid Parentheses 괄호 짝 맞추기 | Stack

2024. 5. 26. 00:39· Languages/Python

Given a string s containing just the characters '(', ')', '{', '}', '[' and ']', determine if the input string is valid.

An input string is valid if:

  1. Open brackets must be closed by the same type of brackets.
  2. Open brackets must be closed in the correct order.
  3. Every close bracket has a corresponding open bracket of the same type.

Example 1:

Input: s = "()"
Output: true

Example 2:

Input: s = "()[]{}"
Output: true

Example 3:

Input: s = "(]"
Output: false

 

Constraints:

  • 1 <= s.length <= 104
  • s consists of parentheses only '()[]{}'.

 

(), [], {}이 서로 짝을 이루면 true, 아니면 false를 반환하는 함수를 완성해야 한다.

전에 백준에서 ()로만 이루어진 배열을 스택으로 풀었던 기억이 나서

"스택으로 풀어야겠다!!" 생각은 했는데

괄호가 세 종류라 경우의 수가 너무 많아서 어떻게 풀어야 할지 난감했다..

 

당연 답을 보고 푸는 것이 좋지 않은 습관이라는 것을 알고 있지만,

지금은 처음 배워 가는 단계이기에 방법을 참고했다.

 

핵심은 Stack과 딕셔너리를 사용하는 것이었다.

 

class Solution:
    def isValid(self, s: str) -> bool:
        stk=[]
        
        brackets = {')': '(', '}': '{', ']': '['}
        # 딕셔너리로 괄호 짝을 맞춘다
        for char in s:
            if char in '({[': # 여는 괄호인 경우
                stk.append(char) # 여는 괄호면 스택에 저장한다
            elif char in ')}]': # 닫는 괄호인 경우
                if not stk or brackets[char] != stk.pop(): # 스택이 비어있거나 현재 괄호와 매칭되는 여는 괄호가 스택의 top에 있는 경우
                    return False
        return not stk # 스택이 비어있어야 true

 

많이 배웠다..

다음에 혼자 다시 풀어봐야겠다.

'Languages > Python' 카테고리의 다른 글

[Python] [백준 #1026] zip으로 리스트끼리 연산하기  (0) 2024.07.12
[Python] leetcode | 2974. Minumum Number Game | array sort  (0) 2024.05.26
[Python] 프로그래머스 | 같은 숫자는 싫어 | append  (0) 2024.05.24
[Python] [백준 #20291] Counter로 배열 요소 개수 세기  (0) 2024.05.10
[Python] [백준 #1764] 두 개의 set(집합) 중복 요소 출력하기  (0) 2024.05.10
'Languages/Python' 카테고리의 다른 글
  • [Python] [백준 #1026] zip으로 리스트끼리 연산하기
  • [Python] leetcode | 2974. Minumum Number Game | array sort
  • [Python] 프로그래머스 | 같은 숫자는 싫어 | append
  • [Python] [백준 #20291] Counter로 배열 요소 개수 세기
효딩
효딩
개ㄱ발은 기세다. 줄여서 객기.
효딩
hyoding
효딩
전체
오늘
어제
  • 분류 전체보기 (245)
    • SKKU SW (30)
      • Computer Architecture (14)
      • Database (4)
      • Computer Network (3)
      • Operating System (7)
      • Mobile App Programming (2)
    • SuperCoding (68)
    • CS (8)
    • Web Programming (19)
    • Cloud (13)
    • Languages (45)
      • Python (8)
      • Java (37)
    • Supporters (8)
      • MoteMote (6)
      • NHN Cloud (2)
    • Certification (27)
      • Network Advisor (14)
      • ADsP (10)
      • Engineer Information Proces.. (3)
    • Finance (9)
      • 경제금융용어 (3)
    • Woori FISA (14)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • apppaas
  • 인프라개발
  • 클라우드
  • 서버생성
  • 글로벌소프트웨어캠퍼스
  • 네트워크관리사2급 공부방법
  • 네트워크관리사 후기
  • 우리FISA
  • 앱개발
  • 클라우드서비스개발
  • 네트워크관리사 커트라인
  • 인프라
  • 네트워크관리사
  • nhn cloud
  • AWS
  • 네트워크관리사 합격
  • 코틀린문법
  • 봐
  • rds local 접속
  • 코틀린
  • Kotlin
  • K-디지털트레이닝
  • 우리fis아카데미
  • 네트워크관리사2급 필기
  • 네트워크관리사 준비물
  • 네트워크관리사2급
  • 서버배포
  • 서버개발
  • 클라우드 서비스
  • 우리에프아이에스

최근 댓글

최근 글

hELLO · Designed By 정상우.v4.2.2
효딩
[Python] leetcode | 20. Valid Parentheses 괄호 짝 맞추기 | Stack
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.