[Python] 백준 24511 queuestack

eun·2024년 1월 28일

문제 24511

먼저 위 문제를 이해해보자.

  • 먼저 첫째줄에는 자료구조의 개수 n이 주어진다.
  • 이후에는 n개의 수열 A가 주어지는데, 0이면 큐, 1이면 스택을 나타낸다.
  • 다음 줄에는 각 자료구조에 들어있는 원소들이 나타난다.
  • 예를 들어 두번째 줄에 '0 1 1 0', 세번째 줄에 '1 2 3 4'가 주어진다면
    1은 첫번째 자료구조인 큐에, 2는 스택, 3도 스택, 4는 큐에 저장되는 것이다. 물론 각각의 자료구조에 따로 저장된다.
  • 넷째줄에는 삽입할 수열의 길이 m이 주어진다.
  • 마지막 줄에는 m길이의 수열 c가 주어진다. 해당 수열은 문제에서 주어진 queuestack이라는 새로운 자료구조에 삽입하는 것이다.
  • queuestack에 삽입하면 해당 원소는 첫번째 자료구조부터 마지막 자료구조까지 돌아가며 순서대로 pop된 원소가 다음 자료구조에 들어간다. 마지막 자료구조에서 pop된 원소가 출력된다.
# 24511

import sys
from collections import deque

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

lst = deque()
for i in range(n):
    if a[i] == 0:
        lst.append(b[i])

for j in range(m):
    lst.appendleft(c[j])
    
for _ in range(m):
    print(lst.pop(), end=' ')

위 문제는 문제 자체를 이해하는 데 오랜 시간이 걸렸다.
stack에서는 새롭게 append한 원소가 그대로 pop이 되고, queue에서는 가장 처음에 append된 원소가 pop된다는 것을 이용하여 코드를 작성하였다.

0개의 댓글