본문 바로가기

프로그래머스, 백준

백준 queuestack

문제와 조건은 다음과 같다.

 

 

 

  • queue와 stack의 두 자료구조가 주어지며, 각각의 자료구조에는 여러 개의 원소가 들어갈 수 있다.
  • 입력받은 원소를 자료구조의 순서에 따라 삽입하고, 맨 앞부터 순서대로 처리해야 한다는 점에서 queue의 선입선출(FIFO)와 stack의 후입선출(LIFO) 성질을 고려해야 한다.
  • N개의 자료구조 중 각 자료구조의 타입이 주어짐 (0은 큐, 1은 스택)
  • N개의 자료구조에 각각 주어진 원소들이 리스트로 주어지고, 이를 순서대로 queue 또는 stack에 넣어야 한다.
  • N개의 자료구조에 원소를 순서대로 삽입하고, 각 자료구조의 앞에 원소를 삽입할지 뒤에 삽입할지를 결정해야 한다.
  • 삽입된 원소들을 차례대로 꺼내야 하고 최종적으로 모든 원소를 차례대로 반환해야 한다.
  1.  

 

 

 

 

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