[강의 정리/Stack]

2023. 3. 6. 16:26· Algorithm/Python

 

Stack 활용

  1. LIFO 특성을 활용한 문제
  2. DFS(깊이 우선 탐색)에 사용

 

예제

'(){}[]'를 포함하고 있는 문자열 s가 주어졌을 때, 괄호가 유효한지 아닌지 판별하라

 

제약조건

1 <= s.length <= 10의 4승

문자열 s는 '(){}[]'의 괄호들로만 구성되어 있다.

 

 

코드 설계 방법

s 문자열을 돌면서(반복문) 여는 괄호가 들어오면 stack에 push해주고, 닫는 괄호가 들어오면 짝이 맞다면 stack에 pop을 해줌. 짝이 맞지 않을 경우(유효하지 않은 괄호일 경우) return False. stack이 비어있다면 유효한 괄호만이 있다는 뜻이니까 return True를 해주면 됨.

 

stack에 push와 pop은 둘 다 O(1)의 시간복잡도를 가짐. 문자열을 반복하는 구간(n개의 문자열)은 O(n)의 시간복잡도를 가진다.

 

input: s = "{(([]))[]}" 라는 문자열의 괄호가 짝이 잘맞는지 확인해보자

 

def isValid(s):
    stack = []
    for p in s:
        if p == "(":
            stack.append(")")
        elif p == "{":
            stack.append("}")
        elif p == "[":
            stack.append("]")
        elif not stack or stack.pop() != p:
            return False
        return not stack


isValid("{(([]))[]}")
반응형

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

[알고리즘/Python] (개념) Dijkstra(다익스트라) 알고리즘 (최단경로 구하기) - Shortest Path  (0) 2023.11.27
[LeetCode] 200. Number of Islands  (2) 2023.10.13
[LeetCode] 104. Maximum Depth of Binary Tree  (0) 2023.08.10
[LeetCode] 236. Lowest Common Ancestor of a Binary Tree  (0) 2023.08.06
[강의 정리/Python] List  (0) 2023.03.05
'Algorithm/Python' 카테고리의 다른 글
  • [LeetCode] 200. Number of Islands
  • [LeetCode] 104. Maximum Depth of Binary Tree
  • [LeetCode] 236. Lowest Common Ancestor of a Binary Tree
  • [강의 정리/Python] List
빵판 AKA 브레드보드
빵판 AKA 브레드보드
반응형
빵판 AKA 브레드보드
BreadBoard's devlog
빵판 AKA 브레드보드
전체
오늘
어제
  • 분류 전체보기 (51)
    • iOS (8)
    • Swift (1)
    • RxSwift (2)
    • Algorithm (29)
      • Swift (7)
      • Python (9)
      • Java (12)
    • Error 정리 (3)
    • ETC (2)
    • CS (0)
    • Spring (1)
      • 일반 (0)
      • Spring Security (1)
    • Infra (0)
      • CI CD (0)
    • Project (4)
      • Vinyler (3)
      • BinBean (1)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • Dijkstra
  • SPM
  • framework
  • 알고리즘
  • Apple Business Manager
  • 최단경로
  • SwiftPackageManager
  • 다익스트라
  • greedy알고리즘
  • TestFlight
  • DFS
  • github
  • IOS
  • xcode
  • BFS
  • CocoaPods
  • uicollectionview
  • AutoLayout
  • Apple Enterprise Program
  • AWS
  • 백준
  • 코딩테스트
  • RxSwift
  • 컴퓨터공학과
  • 개발자
  • S3
  • 편입

최근 댓글

최근 글

hELLO · Designed By 정상우.v4.2.1
빵판 AKA 브레드보드
[강의 정리/Stack]
상단으로

티스토리툴바

단축키

내 블로그

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

블로그 게시글

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

모든 영역

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

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