본문 바로가기
CS 공부/알고리즘

스택(Stack) 두 개로 큐(Queue) 구현하기

by 횰쓰 2023. 8. 8.

구현방법

큐를 입력할 때에는 하나의 스택의 push()를 통하여 데이터를 넣고,

큐를 추출할 때에는 다른 스택의 pop()를 통하여 선입선출을 만족시키는 방법

 

 

Enqueue

- 첫번째 스택 stack1에 push를 하여 데이터 저장

 

 

Dequeue

- 두번째 스택 stack2 이용

a. stack2가 비어있다면 stack1이 비어질 때까지 pop()하여 모든 데이터를 옮겨넣음. 이 결과로 stack1에서 가장 먼저 있었던 데이터는 stack2의 top에 위치하게 됨

b. stack2.pop()을 하면 가장 먼저 있었던 데이터가 가장 먼저 추출됨(FIFO)

 

 

코드 작성

class Queue(object):
    def __init__(self):
        self.instack=[]
        self.outstack=[]

    def enqueue(self,element):
        self.instack.append(element)

    def dequeue(self):
        if not self.outstack:
            while self.instack:
                self.outstack.append(self.instack.pop())
        return self.outstack.pop()

 

'CS 공부 > 알고리즘' 카테고리의 다른 글

큐(Queue) 두 개로 스택(Stack) 구현하기  (0) 2023.08.08
동적 계획법 (Dynamic Programming)  (0) 2022.08.28
계수 정렬(Counting Sort)  (0) 2022.08.21
해시 테이블 (Hash Table)  (0) 2022.08.20
기수 정렬 (Radix Sort)  (0) 2022.08.13

댓글