[BAEKJOON] - 10845번 : 큐

Kim Hyen Su·2024년 1월 18일
0

⏲️ 알고리즘

목록 보기
44/95

10845번 문제 링크

위 문제도 이전 "10773번 : 제로" 문제와 마찬가지로 자바 문서를 참고하여 간단하게 풀이가 가능한 문제이며, 기본적인 자료 구조인 '큐'를 사용하여 푸는 문제이다.

하지만, 저는 "back"(가장 뒤에 있는 정수) 로직을 편하게 수행하기 위해서 LinkedList 컬렉션 프레임웤으로 위 알고리즘을 구현하였습니다.

😀 성공

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

public class Main{
    public static void main(String[] args)throws IOException{
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        StringBuilder sb = new StringBuilder();
        
        int N = Integer.parseInt(br.readLine());
        
        LinkedList<String> queue = new LinkedList<>();
        
        while(N-- > 0){
            StringTokenizer st = new StringTokenizer(br.readLine());
            while(st.hasMoreTokens()){
                String str = st.nextToken();
                
                switch(str){
                    case "push":
                        queue.add(st.nextToken());
                        break;
                    case "pop":
                        if(!queue.isEmpty()){
                            sb.append(queue.poll());
                        }else{
                            sb.append(-1);
                        }
                        break;
                    case "size":
                        sb.append(queue.size());
                        break;
                    case "empty":
                        if(queue.isEmpty()){
                            sb.append(1);
                        }else{
                            sb.append(0);
                        }
                        break;
                    case "front":
                        if(!queue.isEmpty()){
                            sb.append(queue.peekFirst());
                        }else{
                            sb.append(-1);
                        }
                        break;
                    case "back":
                        if(!queue.isEmpty()){
                            sb.append(queue.peekLast());
                        }else{
                            sb.append(-1);
                        }
                        break;
                }
                if(!str.equals("push")){
                    sb.append("\n");
                }
            }
        }
        br.close();
        System.out.println(sb);
    }
}
profile
백엔드 서버 엔지니어

0개의 댓글