728x90
스택이 무엇인지 정확히 모르더라도, '스택을 쌓는다' 라는 말은 흔히들 들어 보았을 것이다.
'스택(Stack)'은 데이터를 마치 동전을 쌓듯이, 위에서 위로 쌓아 올리는 자료구조이다.
쌓여있는 동전을 상상해보자, 쌓여있는 동전에서 동전을 하나 가져올때 가장 위에 올려져 있는 동전부터 가져올 수 있을것이고 가장 밑바닥에 놓여진 동전이 가장 먼저 놓여진 동전이 될 것이다.
스택은 이처럼 가장 늦게 들어온 데이터가 가장 먼저 나가가 되는 LIFO(Last In First Out) 형태의 자료구조이다.
스택을 그림으로 표현하면 다음과 같다.

위의 이미지에서 알 수 있듯이, 새로운 데이터가 스택에 삽입되면 5위에 올라가게 된다.
스택의 자료들을 사용하기 위해, 이용하는 연산은 다음과 같다.
- push(item) : 스택의 가장 위에 item을 삽입한다.
- pop() : 스택의 가장 위에 놓인 데이터를 뽑아서(스택에서 제거된다.) 반환한다.
- peek() : 스택의 가장 위에 놓인 데이터를 반환한다.(스택에서 제거되지 않는다.)
- isEmpty() : 스택이 비어있다면 True를, 스택이 비어있지 않다면 Fasle를 반환한다.
파이썬에서는 별도의 라이브러리를 사용할 필요 없이, 리스트(list)가 배열이자 스택의 역할을 한다. peek연산과 isEmpty가 메소드로 작성되어 있지는 않지만 append(item)를 통해 push를 pop()를 통해 pop을 할 수 있다.
'CS' 카테고리의 다른 글
BFS : 너비우선탐색 (0) | 2023.09.06 |
---|