philaphillip

[Cos Pro 1급, Python] 6차 9번 : 스택으로 큐 만들기 본문

알고리즘/파이썬

[Cos Pro 1급, Python] 6차 9번 : 스택으로 큐 만들기

잡식블로그 2024. 3. 3. 16:14
반응형

문제

스택 두개를 이용해 Queue 자료구조를 만들었을 때, Queue 자료 구조의 pop(또는 dequeue) 함수를 구현하려합니다. Queue란 먼저 삽입한 데이터를 먼저 빼내는 자료구조를 뜻합니다. pop 함수를 만들기 위해 다음과 같이 프로그램 구조를 작성했습니다.
 
  1. 스택2가 비었다면 스택1에 아무것도 남지 않을때까지 스택1을 pop한 값을 스택2에 push 한다.
  2. 스택2를 pop한 값을 리턴한다.
배열 stack1과 정수 stack1_idx, 배열 stack2과 정수 stack2_idx가 solution 함수의 매개변수로 주어집니다. 이때, stack1_idx는 stack1을 스택으로 이용했을 때 stack1의 top의 index를 의미하며, stack2_idx는 stack2를 스택으로 이용했을 때 stack2의 top의 index를 의미합니다.
두 배열을 스택으로 이용해 Queue 자료 구조의 pop 함수를 구현하려합니다. 위 구조를 참고하여 코드가 올바르게 동작할 수 있도록 빈칸에 주어진 func_a, func_b, func_c 함수와 매개변수를 알맞게 채워주세요.
※ 배열 index가 0인 부분을 스택의 bottom으로 생각합니다.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

코드

def func_a(stack):
	return stack.pop()

def func_b(stack1, stack2):
	while not func_c(stack1):
		item = func_a(stack1)
		stack2.append(item)

def func_c(stack):
	return (len(stack) == 0)

def solution(stack1, stack2):
	if func_c(stack2):
		func_b(stack1, stack2)

	answer = func_a(stack2)
	return answer
    
    
    
    
stack1_1 = [1,2]
stack2_1 = [3,4]
ret1 = solution(stack1_1, stack2_1)

print("solution 함수의 반환 값은", ret1, "입니다.")

stack1_2 = [1,2,3]
stack2_2 = []
ret2 = solution(stack1_2, stack2_2)

print("solution 함수의 반환 값은", ret2, "입니다.")

 

 

 

 

 

반응형
Comments