본문 바로가기

백준/Data Structures

백준 10845 자바

반응형

 

Queue에서 기본적인 메서드들을 알 수 있게 해주는 문제입니다.

간단하게 특징을 소개하자면 FIFO( First In First Out)의 구조로 먼저 들어간 것이 먼저 나가는 일자로 줄을 서는 형태와 유사하다고 보시면 됩니다.

 

헷갈리는 두 가지 메서드만 알아보도록 하겠습니다.

peek : 맨 앞에 있는 원소를 반환합니다. (pop과 다른 점은 원소를 꺼내지는 않습니다. 그대로 큐에 남아 있습니다.)

poll : 큐의 맨 앞에 있는 원소를 삭제합니다.

int num = queue.poll()과 같이 쓴다면 num에 맨 앞 원소가 들어가고 큐에는 그 원소가 없어지게 됩니다.

 

import java.io.*;
import java.util.*;
public class Main {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

        StringBuilder sb = new StringBuilder();

        int back = -1;
        int T = Integer.parseInt(br.readLine());

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

        while (T-- > 0) {
            StringTokenizer st = new StringTokenizer(br.readLine());

            String s = st.nextToken();

            switch (s) {
                case "push":
                   back = Integer.parseInt(st.nextToken());
                   queue.offer(back);
                    break;

                case"pop":
                    if(queue.isEmpty()) {
                        sb.append(-1).append('\n');
                        break;
                    } else {
                        sb.append(queue.poll()).append('\n');
                        break;
                    }

                case "size":
                    sb.append(queue.size()).append('\n');
                    break;

                case "empty":
                    if(queue.isEmpty()) {
                        sb.append(1).append('\n');
                        break;
                    } else {
                        sb.append(0).append('\n');
                        break;
                    }

                case "front":
                    if(queue.isEmpty()) {
                        sb.append(-1);
                        break;
                    } else {
                        sb.append(queue.peek()).append('\n');
                        break;
                    }

                case "back":
                    if(queue.isEmpty()) {
                        sb.append(-1).append('\n');
                        break;
                    } else {
                        sb.append(back).append('\n');
                        break;
                    }
            }
        }
        System.out.println(sb);
    }
}
반응형

'백준 > Data Structures' 카테고리의 다른 글

백준 17608 자바  (0) 2022.08.23
백준 2161 자바  (0) 2022.08.22
백준 4949 자바  (0) 2022.08.22
백준 9012 자바  (0) 2022.08.22
백준 10828 자바  (0) 2022.08.19