[코딩테스트] 스택 설명 및 구현(python)

naring·2023년 2월 10일
0

코딩테스트

목록 보기
1/12
post-thumbnail

가장 기본적인 자료 구조인 스택에 대해 알아보자.

스택 ?

말그대로 쌓는다는 뜻의 stack 영단어를 의미한다. 블럭을 stack 한다고 생각하면, 아래서부터 하나씩 쌓아 올릴 것이다.

그런 뒤에 블록을 하나씩 치운다고 생각하면, 아무도 맨 아래 블록부터 치우진 않을 것이다. 가장 나중에 올려 둔 가장 위에 있는 블록부터 제거하게 된다.

이를 순서를 매겨 살펴보면 1-2-3-4 순으로 블럭을 쌓았으면 4부터 제거하고, 그다음 3, 그 다음 2 .. 이렇게 나중에 올린 블록부터 제거한다. 이러한 자료 구조를 스택이라고 한다.
이를 처음에 들어온 블록을 기준으로 생각하면, 먼저 들어온 블록이 나중에 제거되므로 First In Last Out 구조라고 말한다.

파이썬에서 이 스택 구조는 배열을 통해 구현한다.
아래 코드에서 stack이라는 배열을 만들고, 여기에 1,2,3,4 순서대로 숫자를 추가해보았다. 그렇게 되면 그 결과는 가장 아랫줄과 같다.

stack = []
stack.append(1)
stack.append(2)
stack.append(3)
stack.append(4)

stack = [1,2,3,4]

숫자가 stack에 쌓이는 것은 파이썬 배열 문법에 의해 알아서 순서대로 쌓이게 되었다. 그렇다면 이제 4부터 거꾸로 빼낼 수만 있으면 스택 구현은 끝난다.

이때 pop이라는 메소드를 사용할 수 있다. 이 메소드는 배열의 가장 마지막 원소를 제거해준다. 따라서 pop을 4번 수행하면 4,3,2,1순서대로 빠져나오게 된다.

stack.pop() ## stack = [1,2,3]
stack.pop() ## stack = [1,2]
stack.pop() ## stack = [1]
stack.pop() ## stack = []

이와 같이 파이썬에서는 배열을 활용하면 별도의 라이브러리가 필요 없이 스택을 구현 할 수 있다.

profile
개발은 즐거워

0개의 댓글