알고리즘

백준 자바 10845번 큐

chaewonni 2023. 3. 30. 03:17

그냥 큐를 쓸 수 있냐를 물어보는 문제!

 

package boj_basic.cp_1;

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;

public class Q10845큐 {

	public static void main(String[] args) throws NumberFormatException, IOException {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
        
        Queue<Integer> queue = new LinkedList<>();
        
        int N = Integer.parseInt(br.readLine());
        int last = -1;
        
        for(int i = 0; i<N; i++) {
        	String[] arr = br.readLine().split(" ");
        	
        	switch(arr[0]) {
        	
        	case "push":
        		last = Integer.parseInt(arr[1]);
        		queue.add(last);
        		break;
        		
        	case "pop":
        		if(!queue.isEmpty()) 
        			bw.write(queue.remove()+"\n");
        		else
        			bw.write("-1"+"\n");
        		break;
        	
        	case "size":
        		bw.write(queue.size()+"\n");
        		break;
        		
        	case "empty":
        		if(!queue.isEmpty())
        			bw.write("0"+"\n");
        		else
        			bw.write("1"+"\n");
        		break;
        	
        	case "front":
        		if(!queue.isEmpty())
        			bw.write(queue.peek()+"\n");
        		else
        			bw.write("-1"+"\n");
        		break;
        		
        	case "back":
        		if(!queue.isEmpty())
        			bw.write(last+"\n");
        		else
        			bw.write("-1"+"\n");
        		break;
        		
        	}
        }
        
        bw.flush();
        bw.close();
        br.close();

	}

}

다른 건 다 괜찮았는데 back으로 큐의 가장 뒤에 있는 정수 출력하는 게 살짝 당황스러웠다.

 

push할 때

last = Integer.parseInt(arr[1]);

queue.add(last);

 

해서 가장 뒤에 있는 정수를 last로 기억해두었다가,

 

back에서 last를 출력해줄 수 있도록 했다.