//
728x90

BOJ 24511 queuestack

문제

한가롭게 방학에 놀고 있던 도현이는 갑자기 재밌는 자료구조를 생각해냈다. 

그 자료구조의 이름은 queuestack이다.

queuestack의 구조는 다음과 같다. 1번, 2번, ... , N번의 자료구조(queue 혹은 stack)가 나열되어있으며, 

각각의 자료구조에는 한 개의 원소가 들어있다.

queuestack의 작동은 다음과 같다.

출처 - 백준 온라인 저지

도현이는 길이 M의 수열 C를 가져와서 수열의 원소를 앞에서부터 차례대로 queuestack에 삽입할 것이다.

이전에 삽입한 결과는 남아 있다. (예제 1 참고)

queuestack에 넣을 원소들이 주어졌을 때, 해당 원소를 넣은 리턴값을 출력하는 프로그램을 작성해보자.

시간 제한 : 1 초 (추가 시간 없음)
메모리 제한 : 1024 MB (추가 메모리 없음)

입력

출처 - 백준 온라인 저지

출력

수열 C의 원소를 차례대로 queuestack에 삽입했을 때의 리턴값을 공백으로 구분하여 출력한다.

예제 입력 1

4
0 1 1 0
1 2 3 4
3
2 4 7

각 상태에 대한 큐스택 내부를 표현하면 다음과 같다.

  • 초기 상태 :
  • 첫 번째 원소 삽입 :
  • 두 번째 원소 삽입 :
  • 세 번째 원소 삽입 :

예제 출력 1

4 1 2

예제 입력 2

5
1 1 1 1 1
1 2 3 4 5
3
1 3 5

예제 입력 2

1 3 5

풀이

import sys
from collections import deque

input = sys.stdin.readline
queue = deque()
n = int(input())
a = list(map(int, input().split()))
b = list(map(int, input().split()))

for i in range(n):
	if a[i] == 0:
		queue.appendleft(b[i])
m = int(input())
arr = list(map(int, input().split()))

for i in arr:
	queue.append(i)
	print(queue.popleft(), end=" ")
728x90

+ Recent posts