Coding test(Python3)/스터디

[DAY-21] 백준 24511번 queuestack

녜잉 2024. 6. 7. 20:46

1. 문제 

 

2. 문제 풀이 

 

문제 풀이 접근법1

 

다음과 같은 과정을 통해서 첫번째 원소 삽입 후 배열 B는 [ 2  2  3  1 ]의 상태가 되고, return 되는 원소는 4가 되게 된다. 

 

이때, 자료구조가 스택일 경우에는 pop한 수를 다시 append하게 되므로 아무런 변화가 없게 된다. 

(큐는 FIFO이기 때문에 앞에 있는 원소가 먼저 빠지게 되므로) 

따라서 해당 자료구조에서는 스택을 무시하고 큐가 여러개 이어져 있는 것으로 생각할 수 있다. 

 

1) 큐인 자료구조만 찾아서 하나의 큐로 만든다. (덱 형태)

2) 큐의 맨 앞에 C의 i번째 원소를 추가하고, 맨 뒤의 원소를 pop한 뒤 리스트에 저장한다.

3) 리스트에 저장된 원소를 모두 출력한다. 

import sys
from collections import deque

N = int(sys.stdin.readline())
A = list(map(int, sys.stdin.readline().strip().split()))
B = list(map(int, sys.stdin.readline().strip().split() ))
M = int(sys.stdin.readline())
C = list(map(int, sys.stdin.readline().strip().split()))

queue = deque([])
list = []


for i in range(N):
    if A[i] == 0:
        queue.append(B[i])
        
for i in range(M):
    queue.appendleft(C[i])
    list.append(queue.pop())
    

print(' '.join(map(str, list)))