본문 바로가기
알고리즘

Python에서의 스택

by lewns2 2021. 3. 21.

스택(Stack) : LIFO(Last in First Out), 가장 나중에 쌓은 데이터를 먼저 뺄 수 있는 데이터 구조

 

파이썬은 스택 자료형을 별도로 제공하지 않는다. 대신 리스트가 스택의 모든 연산을 지원한다.

  • push( ) : 요소를 컬렉션에 추가 (=list.append)
  • pop( ) : 아직 제거되지 않은 가장 최근에 삽입한 요소를 제거

 

대표 문제 : 괄호 판별 <LeetCode 20.Valid Parentheses> 

s = input()

stack = []
table = {
    ')': '(',
    '}': '{',
    ']': '['
}

for char in s:
    if char not in table:
        stack.append(char)
        print(stack)
    elif char not in stack and table[char] != stack.pop():
        print(False)

 

 코드 설명

  1. '(', '{', '[' 가 들어오면 stack 리스트에 쌓음.
  2. ')', '}', ']'  가 들어오면 각각의 value와 비교( ex) '[' vs ']'의 value)
  3. 일치하지 않는다면, False
728x90
반응형

'알고리즘' 카테고리의 다른 글

[C++] 함수  (0) 2021.04.27
[C++] 표현식과 문장  (0) 2021.04.26
[C++] 연산자  (0) 2021.04.24
[C++] 변수  (0) 2021.04.24
[BOJ/백준] 2003번 - 수들의 합 2 Python  (2) 2021.03.17