문제: https://www.acmicpc.net/problem/24511
1. 코드
import java.io.*;
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());
StringTokenizer st = new StringTokenizer(br.readLine());
StringTokenizer st2 = new StringTokenizer(br.readLine());
Deque <Integer> d = new ArrayDeque<>();
while(N-- > 0) {
int n = Integer.parseInt(st2.nextToken());
if(Integer.parseInt(st.nextToken()) == 0) {
d.add(n);
}
}
N = Integer.parseInt(br.readLine());
st = new StringTokenizer(br.readLine());
StringBuilder sb = new StringBuilder();
while(N-- > 0) {
int n = Integer.parseInt(st.nextToken());
d.addFirst(n);
sb.append(d.removeLast()).append(' ');
}
System.out.println(sb.toString());
}
}
2. 설명
문제에 대해서 이해를 온전히 못해서 그림을 그려가며 과정을 추론했습니다. 스택인 부분은 어떠한 변화가 존재하지 않는데 큐인 부분은 제거되거나 추가되는 움직임을 알 수 있습니다.
예제 2에는 스택 부분만 존재하는데 이때 스택 부분에 대한 값들은 변화 없이 입력된 값들만 추가 및 제거되는 것을 확인할 수 있습니다.
따라서 큐인 부분만 추가 및 제거하는 것으로 생각되어 예제 1의 과정과 같이 덱을 이용하여 입력에 의해 추가되는 것은 첫 번째 요소에 추가를 진행하고 제거되는 것은 마지막 요소를 제거하니 문제가 해결되었습니다.
3. 정리
이 설명은 이해를 온전하게 한 상태로 푼 문제가 아니라 추측으로 이루어진 것이기에 틀린 내용이 존재할 수 있습니다.
'컴퓨터 > 백준 알고리즘' 카테고리의 다른 글
백준 알고리즘 - 24723번: 녹색거탑 [Java] (0) | 2023.10.06 |
---|---|
백준 알고리즘 - 15439번: 베라의 패션 [Java] (0) | 2023.10.04 |
백준 알고리즘 - 2346번: 풍선 터뜨리기 [Java] (0) | 2023.09.30 |
백준 알고리즘 - 28279번: 덱 2 [Java] (0) | 2023.09.29 |
백준 알고리즘 - 12789번: 도키도키 간식드리미 [Java] (0) | 2023.09.27 |