문제(출처: https://www.acmicpc.net/problem/24511)
< queuestack >
문제 풀이
Queue와 Stack을 사용해서 문제를 해결했다.
Stack은 값을 넣은 것을 바로 pop 하므로 자료구조가 Stack인 것은 고려하지 않기로 했다.
my solution (Java)
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.util.LinkedList;
import java.util.Queue;
import java.util.Stack;
import java.util.StringTokenizer;
public class _24511_ { // queuestack
public static void main(String[] args) throws IOException {
BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
StringTokenizer st;
int n = Integer.parseInt(bf.readLine());
boolean flag[] = new boolean[n];
st = new StringTokenizer(bf.readLine());
for (int i = 0; i < n; i++) {
if (Integer.parseInt(st.nextToken()) == 0) {
flag[i] = true;
}
}
Queue<Integer> queue = new LinkedList<>();
Stack<Integer> stack = new Stack<>();
st = new StringTokenizer(bf.readLine());
for (int i = 0; i < n; i++) {
int num=Integer.parseInt(st.nextToken());
if (flag[i])
stack.add(num);
}
while (!stack.isEmpty()) {
queue.add(stack.pop());
}
int m = Integer.parseInt(bf.readLine());
st = new StringTokenizer(bf.readLine());
for (int i = 0; i < m; i++) {
int num=Integer.parseInt(st.nextToken());
queue.add(num);
bw.write(queue.poll() + " ");
}
bw.flush();
}
}
Main
변수)
n : 자료구조 개수
flag : 큐, 스택 여부 (true: 큐, false: 스택)
queue : Queue <Integer>
stack : Queue에 값을 넣기 위해 임시 저장
m : 삽입할 수열의 길이
- 자료구조 개수(n) 입력
- 수열 A를 입력받은 후 자료구조가 큐라면 flag 배열을 true로 저장
- 수열 B를 입력받은 후 자료구조가 큐인 곳에 들어있는 원소라면 stack에 저장
- Queue에 거꾸로 저장하기 위해 stack에 저장한 값을 뽑아 queue에 저장
- 삽입할 수열의 길이(m) 입력
- 수열 C를 입력받아 queue에 넣고 빼기
- 정답 출력
'🌞Algorithm > 🔥Baekjoon' 카테고리의 다른 글
[Baekjoon] 19598_최소 회의실 개수 (0) | 2023.08.14 |
---|---|
[Baekjoon] 11000_강의실 배정 (0) | 2023.08.14 |
[Baekjoon] 26042_식당 입구 대기 줄 (0) | 2023.08.10 |
[Baekjoon] 28107_회전초밥 (0) | 2023.08.09 |
[Baekjoon] 1726_로봇 (0) | 2023.08.08 |