컴퓨터/백준 알고리즘
백준 알고리즘 - 24511번: queuestack [Java]
이상한 나그네
2023. 10. 2. 00:46
문제: 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. 정리
이 설명은 이해를 온전하게 한 상태로 푼 문제가 아니라 추측으로 이루어진 것이기에 틀린 내용이 존재할 수 있습니다.