
문제 링크
https://www.acmicpc.net/problem/24511
접근 방법
입력으로 주어지는 자료구조 정보 중, 큐(0)인 것만 초기 상태에서 의미를 가집니다.
스택(1)은 이후의 연산에서 영향을 주지 않으므로 제외할 수 있습니다.
초기값 중 큐(0)에 해당하는 값들을 덱의 앞쪽에 순서대로 삽입한 뒤,
새로운 수열의 값들을 덱의 뒤쪽에 하나씩 넣으면서 앞에서 하나씩 빼내어 출력하면 됩니다.
소스 코드
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.IOException;
import java.util.*;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int n = Integer.parseInt(br.readLine());
String[] isQ = br.readLine().split(" ");
String[] init = br.readLine().split(" ");
int m = Integer.parseInt(br.readLine());
String[] seqC = br.readLine().split(" ");
Deque<String> d = new ArrayDeque<>();
for (int i = 0; i < n; i++) {
if (isQ[i].equals("0")) {
d.addFirst(init[i]);
}
}
StringBuilder sb = new StringBuilder();
for (int i = 0; i < m; i++) {
d.addLast(seqC[i]);
sb.append(d.pollFirst()).append(" ");
}
System.out.println(sb);
}
}
코드 설명
isQ[i]가 "0"인 경우에만 초기값을 덱 앞에 넣습니다.
덱은 삽입과 삭제가 모두 양 끝에서 가능한 자료구조이므로, 큐의 성질을 유지하면서 새로 들어오는 수를 뒤에 넣고 앞에서 꺼낼 수 있습니다.StringBuilder를 이용해 결과 문자열을 빠르게 구성하여 출력합니다.
'코딩테스트 > 백준' 카테고리의 다른 글
| [백준 JAVA] 24060. 알고리즘 수업 - 병합 정렬 1 (0) | 2025.07.10 |
|---|---|
| [백준 JAVA] 15686. 치킨 배달 (0) | 2025.07.04 |
| [백준 JAVA] 1629. 곱셈 (0) | 2025.06.29 |
| [백준 JAVA] 11866. 요세푸스 문제 0 (0) | 2025.06.27 |
| [백준 JAVA] 14502. 연구소 (0) | 2024.08.28 |