문제와 조건은 다음과 같다.
- queue와 stack의 두 자료구조가 주어지며, 각각의 자료구조에는 여러 개의 원소가 들어갈 수 있다.
- 입력받은 원소를 자료구조의 순서에 따라 삽입하고, 맨 앞부터 순서대로 처리해야 한다는 점에서 queue의 선입선출(FIFO)와 stack의 후입선출(LIFO) 성질을 고려해야 한다.
- N개의 자료구조 중 각 자료구조의 타입이 주어짐 (0은 큐, 1은 스택)
- N개의 자료구조에 각각 주어진 원소들이 리스트로 주어지고, 이를 순서대로 queue 또는 stack에 넣어야 한다.
- N개의 자료구조에 원소를 순서대로 삽입하고, 각 자료구조의 앞에 원소를 삽입할지 뒤에 삽입할지를 결정해야 한다.
- 삽입된 원소들을 차례대로 꺼내야 하고 최종적으로 모든 원소를 차례대로 반환해야 한다.
import sys
from collections import deque
# 입력: 큐와 스택에 포함될 원소 개수
num_elements = int(input())
# 입력: 각 자료구조의 타입 (0이면 큐, 1이면 스택)
structure_type = list(map(int, sys.stdin.readline().split()))
# 입력: 각 자료구조에 포함된 원소들
structure_values = list(map(int, sys.stdin.readline().split()))
# 입력: 추가할 원소 개수
num_additional = int(input())
# 입력: 추가할 원소 리스트
additional_values = list(map(int, sys.stdin.readline().split()))
# deque 초기화 (큐 역할을 수행)
queue = deque()
# 자료구조 타입이 큐인 경우 해당 원소를 deque에 추가
for i in range(num_elements):
if structure_type[i] == 0: # 타입이 0이면 큐
queue.append(structure_values[i])
# 추가할 원소들을 deque의 앞쪽에 삽입 (LIFO 구조를 따르기 위함)
for value in additional_values:
queue.appendleft(value)
# 추가된 원소를 큐의 뒤에서부터 하나씩 꺼내어 출력
for _ in range(num_additional):
print(queue.pop(), end=' ')
'프로그래머스, 백준' 카테고리의 다른 글
1033번 칵테일 (0) | 2024.11.13 |
---|---|
백준_1063번 킹 (0) | 2024.11.11 |
백준_2346번 풍선 터뜨리기 (0) | 2024.10.31 |
백준 1051번 숫자 정사각형 (0) | 2024.10.30 |
백준 1045번 도로 (0) | 2024.10.30 |