본문 바로가기
백준

백준 24511: queuestack(java)

by unhyepnhj 2024. 7. 18.

문제


풀이

 

A가 스택일 때는 항상 새로 삽입된 값이 pop되고(스택은 LIFO 구조이므로), 처음 삽입된 B값은 유지되기 때문에 A가 큐일 때만 구현하면 된다.

 

A(i)마다 큐를 각각 선언하기보다는 모든 큐를 합쳐 덱으로 표현했는데, 이는 아래와 같이 설명할 수 있다.

import java.io.BufferedReader;
import java.util.Queue;
import java.util.Deque;
import java.util.LinkedList;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;

public class Main {
	public static void main(String[] args) throws IOException{
		BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
		Deque<Integer> queue=new LinkedList<>();
		StringBuilder sb=new StringBuilder();
		
		int N=Integer.parseInt(br.readLine());
		
		//A
		StringTokenizer st=new StringTokenizer(br.readLine());	
		int[] A=new int[N];
		for(int i=0; i<N; i++) {
			A[i]=Integer.parseInt(st.nextToken());
		}
		
		st=new StringTokenizer(br.readLine());
		for(int i=0; i<N; i++) {
			int B=Integer.parseInt(st.nextToken());
			if(A[i]==0) {	//큐일때
				queue.addFirst(B);
			}
		}
		
		int M=Integer.parseInt(br.readLine());
		
		st=new StringTokenizer(br.readLine());
		for(int i=0; i<M; i++) {
			int C=Integer.parseInt(st.nextToken());
			queue.addLast(C);
			sb.append(queue.removeFirst()+" ");
		}
		System.out.println(sb);
	}
}

'백준' 카테고리의 다른 글

백준 10815: 수 찾기(java)  (0) 2024.07.19
백준 1920: 수 찾기(java)  (0) 2024.07.18
백준 1021: 회전하는 큐(java)  (0) 2024.07.18
백준 2840: 행운의 바퀴(java)  (0) 2024.07.18
백준 1158: 요세푸스 문제(java)  (0) 2024.07.17