🔗 Problem Link

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


❔Thinking

  • N개의 자료구조에 주어지는 숫자를 차례로 append하고 pop한 숫자를 다시 append하여 최종 pop한 숫자를 출력한다.
  • 1은 스택을, 0은 큐를 의미한다.
  • M개의 숫자를 차례로 append하기 때문에, 최종 출력하는 숫자는 공백을 사이에 둔 M개의 숫자이다.

💻Solution

import sys
input = sys.stdin.readline

N = int(input().rstrip())
A = list(input().split())
B = list(input().split())
result = [b for a, b in zip(A,B) if a == '0'][::-1]
M = int(input().rstrip())
result.extend(list(input().split()))

# 결과 출력
print(' '.join(result[:M]))

🗝️keypoint

  1. 스택은 append하고 pop한 숫자가 원래의 숫자와 같기 때문에, 고려하지 않아도 된다.
  2. 큐의 append와 pop을 반복하는 일은, 주어진 모든 큐를 하나의 큐로 합하여 생각하는 것과 같다.
    1. a = [1,2,3], b = [4,5,6]을 하나의 큐로 합치면 a_b = [1,2,3,4,5,6]과 동일하다.

'코딩테스트' 카테고리의 다른 글

그래프의 사이클 판별  (0) 2023.08.02
그래프 표현  (0) 2023.08.01

+ Recent posts