스택(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)
코드 설명
- '(', '{', '[' 가 들어오면 stack 리스트에 쌓음.
- ')', '}', ']' 가 들어오면 각각의 value와 비교( ex) '[' vs ']'의 value)
- 일치하지 않는다면, 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 |