나는 이렇게 학습한다/Algorithm & SQL

[자료구조] 스택과 큐 Python 코드로 구현해보았다.

daco2020 2022. 2. 9. 20:33
반응형


스택과 큐

'Stack'은 나중에 들어온 것을 먼저 내보내는 후입선출을 뜻한다.
'Queue'는 먼저 들어온 것을 먼저 내보내는 선입선출을 뜻한다. 

이를 파이썬 코드로 구현하자면 다음과 같다.

 

스택

<스택 용어>
top - 스택의 가장 윗부분 (꼭대기)
bottom - 스택의 가장 아랫부분 (바닥)
push(item) - 데이터를 넣는 작업
pop() - 데이터를 꺼내는 작업
peek() - 스택의 가장 위에 있는 항목 조회

 

stack_list = []

for i in range(5):
    stack_list.append(i)
    print(f"stack_push :: {stack_list}")

for _ in range(5):
    stack_list.pop()
    print(f"stack_pop :: {stack_list}")

0부터 4까지 차례대로 리스트에 넣고 stack으로 값을 꺼내보았다.

 

 

결과는 다음과 같다.

stack_push :: [0]
stack_push :: [0, 1]
stack_push :: [0, 1, 2]
stack_push :: [0, 1, 2, 3]
stack_push :: [0, 1, 2, 3, 4]
stack_pop  :: [0, 1, 2, 3]
stack_pop  :: [0, 1, 2]
stack_pop  :: [0, 1]
stack_pop  :: [0]
stack_pop  :: []



스택은 가장 나중에 들어온 4부터 차례대로 꺼내는 것을 볼 수 있다. (후입선출 - Last In First Out)

 

 

 

 

 

<큐 용어>
front - 데이터를 꺼내는 쪽(맨 앞)
rear - 데이터를 넣는 쪽(맨 뒤)
enqueue(item) - 데이터를 넣는 작업
dequeue() - 데이터를 꺼내는 작업
peek() - 큐의 가장 앞에 있는 항목 조회

 

queue_list = []

for i in range(5):
    queue_list.append(i)
    print(f"queue_enqueue :: {queue_list}")

for _ in range(5):
    queue_list.pop(0)
    print(f"queue_dequeue :: {queue_list}")

동일하게 queue로도 값을 꺼내보았다.

 

 

결과는 다음과 같다. (이해하기 쉽도록 숫자 위치에 맞게 리스트 위치를 우측 정렬함)

queue_enqueue :: [0]
queue_enqueue :: [0, 1]
queue_enqueue :: [0, 1, 2]
queue_enqueue :: [0, 1, 2, 3]
queue_enqueue :: [0, 1, 2, 3, 4]
queue_dequeue ::    [1, 2, 3, 4]
queue_dequeue ::       [2, 3, 4]
queue_dequeue ::          [3, 4]
queue_dequeue ::             [4]
queue_dequeue ::              []



큐는 가장 먼저 들어온 0부터 차례로 꺼내는 것을 볼 수 있다. (선입선출 - First In First Out)

 

 

 

 

반응형

'나는 이렇게 학습한다 > Algorithm & SQL' 카테고리의 다른 글

Friend or Foe?  (0) 2022.02.11
Tribonacci Sequence  (0) 2022.02.10
두 개 뽑아서 더하기  (0) 2022.02.09
최소직사각형  (0) 2022.02.08
가운데 글자 가져오기  (0) 2022.02.07