백준 - 큐2 (18258번) 실버 4

2024. 3. 11. 18:57코딩테스트 정리(자바)

728x90

1. 생성하기

Queue <Integer> q=new LinkedList<>();

 

 

2. 주요 메서드

 

삽입

q.add(); //성공 시 true, 실패 시 Exception 발생
q.offer(); //성공 시 true, 실패 시 false 반환

 

 

삭제

q.remove();  //삭제할 값 반환, 큐가 비어있다면 Exception 발생
q.remove(삭제할 값);  //삭제할 값이 존재하면 삭제 후 true 반환, 존재하지 않으면 false 반환
q.poll();  //삭제할 값 반환, 큐가 비어있다면 null 반환

 

 

front에 위치한 값 반환

q.element();  //front에 위치한 값 반환, 큐가 비어있다면 Exception 발생
q.peek();  //front에 위치한 값 반환, 큐가 비어있다면 null 반환

 

 

초기화

q.clear();

 

 

큐 크기 반환

q.size();

 

 

큐에 해당 원소가 존재하는지 여부

q.contains(찾을 값)  //찾을 값이 존재하면 true, 없으면 false 반환

 

 

큐에는 마지막 원소를 반환하는 메서드가 없다.

마지막 원소를 반환하고 싶다면 deque를 생성해서 peeklast() 메서드를 써야 한다.

 

혹은 큐에 add 할 때마다 last 변수를 사용해서

마지막 원소가 뭐다라고 표시해두어야 한다.

 

import java.io.*;
import java.util.*;

class Main{
    public static void main(String[] args) throws IOException{
        BufferedReader br=new BufferedReader(
        new InputStreamReader(System.in));
        BufferedWriter bw=new BufferedWriter(
        new OutputStreamWriter(System.out));

        StringBuilder sb=new StringBuilder();
        
        int N=Integer.parseInt(br.readLine());
        Queue <Integer> q=new LinkedList<>();
        String last="";
        
        for(int i=0;i<N;i++){
            String[] str=br.readLine().split(" ");
            switch(str[0]){
                case "push":
                    last=str[1];
                    q.add(Integer.parseInt(str[1]));
                    break;
                case "pop":
                    if(!q.isEmpty()){
                        sb.append(q.remove()).append("\n");
                    }
                    else{
                       sb.append("-1").append("\n");
                    }
                    break;
                        
                case "size":
                   sb.append(q.size()).append("\n");
                    break;
                case "empty":
                    if(q.isEmpty())
                        sb.append("1").append("\n");
                    else
                        sb.append("0").append("\n");
                    break;
                case "front":
                    if(!q.isEmpty()){
                       sb.append(q.peek()).append("\n");
                    }
                    else{
                        sb.append("-1").append("\n");
                    }
                    break;
                case "back":
                    if(!q.isEmpty()){
                        sb.append(last).append("\n");
                    }
                    else{
                        sb.append("-1").append("\n");
                    }         
            }
        }
        bw.write(sb.toString()); 

        bw.flush();
        bw.close();
    }
}
728x90