본문 바로가기

JAVA

JAVA(2022.09.10)- 큐를 적용한 문제 알아보기

Queue를 구현해야 하는 문제들을 review해보는 시간을 가졌다. 

 

문제 : [백준] 10845번 

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


public class boj_6_10845 {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); 
        //입력값 받기 
        StringBuilder sb = new StringBuilder();
        //문자열을 이어붙이기 위해 사용
        Queue<Integer> q = new LinkedList<Integer>();
        //LinkedList를 이용한 queue구현 
        int b = 0;

        int n = Integer.parseInt(br.readLine());
        //받아 읽은 값을 정수형으로 변환. > 처음으로 읽은 N값이 됨. 
        for (int i = 0; i < n; i++) {
            StringTokenizer st = new StringTokenizer(br.readLine());
            String S = st.nextToken();
            //명령어를 읽음
            switch (S) {
            //조건에 따라 실행하는 코드 작성 
                case "push":
                    int num = Integer.parseInt(st.nextToken());
                    q.add(num);
                    b = num; //가장 최근에 저장된 값이 push를 통해 들어온 값이므로 그 값을 변수 b에 저장
                    break;
                case "pop":
                    if (q.isEmpty()) {
                        sb.append("-1\n");
                    } else {
                        sb.append(q.remove() + "\n");
                    }
                    break;
                case "size":
                    sb.append(q.size() + "\n");
                    break;
                case "empty":
                    if (q.isEmpty()) sb.append("1\n");
                    else sb.append("0\n");
                    break;
                case "front":
                    if (q.isEmpty()) sb.append("-1\n");
                    else sb.append(q.peek() + "\n");
                    break;
                case "back":
                    if (q.isEmpty()) sb.append("-1\n");
                    else sb.append(b + "\n");
                    break;
            }
        }
        System.out.println(sb);
    }
}

 

출처 : https://velog.io/@kimmjieun/%EB%B0%B1%EC%A4%80-10845%EB%B2%88-%ED%81%90-Java-%EC%9E%90%EB%B0%94 를 참고하였습니다.