codes/baekjoon

24511 queuestack

카제xd 2024. 12. 17. 01:24

https://www.acmicpc.net/problem/24511

 

 

# trial 1: 시간 초과 (list 사용)

import sys

input = sys.stdin.readline

N = int(input())
A = list(map(int, input().split()))
B = list(map(int, input().split()))
M = int(input())
C = list(map(int, input().split()))

result = []

for c in C:
    prev = c
    for i in range(N):
        if not A[i]:
            popped = B[i]
            B[i] = prev
            prev = popped
    result.append(popped)
    
print(' '.join(result))

 

 

# trial 2: 시간 초과 (deque 사용)

import sys
from collections import deque

input = sys.stdin.readline

N = int(input())
A = input().split()
B = input().split()
M = int(input())
C = input().split()

queuestack = [deque([B[i]]) for i in range(N)]

result = []

for c in C:
    popped = c
    for i in range(N):
        if not int(A[i]):
            queuestack[i].append(popped)
            popped = queuestack[i].popleft()

    result.append(popped)
    
print(' '.join(result))

 

 

# trial 3: 시간 초과 (queue만 고려)

import sys
from collections import deque

input = sys.stdin.readline

N = int(input())
A = input().split()
B = input().split()
M = int(input())
C = input().split()

queuestack = [deque([B[i]]) for i in range(N) if not int(A[i])]

result = []

for c in C:
    popped = c
    for queue in queuestack:
            queue.append(popped)
            popped = queue.popleft()
    result.append(popped)
    
print(' '.join(result))

 

 

# trial 4: 성공 (queue만 고려시, 여러 queue는 전체적으로 하나의 queue라는 이해)

import sys
from collections import deque

input = sys.stdin.readline

N = int(input())
A = input().split()
B = input().split()
M = int(input())
C = input().split()

queuestack = deque([B[i] for i in range(N) if not int(A[i])])

result = []
for c in C:
    queuestack.appendleft(c)
    result.append(queuestack.pop())

print(' '.join(result))

 

 

[개선할 점]

- queue와 stack을 너무 특정 방향 기준(왼쪽이 old다)으로만 생각하고 있었음. FIFO, LIFO에 대한 이해 자체가 중요함.

 

'codes > baekjoon' 카테고리의 다른 글

10773 제로  (0) 2025.01.04
28278 스택 2  (0) 2025.01.03
11478 서로 다른 부분 문자열의 개수  (0) 2024.12.15