🌞Algorithm/🔥Baekjoon

[Baekjoon] 24511_queuestack

뿌야._. 2023. 8. 11. 11:29

Silver III

문제(출처: 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