[백준 10845]- 큐- JAVA [배열 구현]
본문 바로가기

알고리즘/백준

[백준 10845]- 큐- JAVA [배열 구현]

728x90
반응형

안녕하세요 놀이방 사장입니다.

 

이번 포스팅은 백준 10845

"큐"문제입니다.

 

큐라는 자료구조를 아시면 그대로 구현하시면 되는 문제입니다.

 

자바에서는 queue 가 구현되어 있습니다.

그걸 사용하셔도 되지만 그러면 의미가 없으니깐 배열로 구현해보았습니다.

 

10845번: 큐

첫째 줄에 주어지는 명령의 수 N (1 ≤ N ≤ 10,000)이 주어진다. 둘째 줄부터 N개의 줄에는 명령이 하나씩 주어진다. 주어지는 정수는 1보다 크거나 같고, 100,000보다 작거나 같다. 문제에 나와있지

www.acmicpc.net

 

 

구현 코드

/*
    백준 10845 큐
 */


import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.io.IOException;
import java.util.StringTokenizer;

// 배열로 큐 만들기
public class Main{

    static int[] que = new int[10001];
    static int first = 0;
    static int last = 0;

    // push
    public static void push(int x){
        que[last] = x;
        last++;
    }

    // pop
    public static int pop(){
        if(last - first == 0){ //큐에 아무 데이터도 없을 때
            return -1;
        }else{
            int value = que[first];
            first++;
            return value;
        }
    }

    // size
    public static int size(){
        return last - first;
    }

    // empty
    public static int empty(){
        if(last - first == 0){
            return 1;
        }else{
            return 0;
        }
    }

    // front
    public static int front(){
        if(last-first == 0){
            return -1;
        }else{
            int value = que[first];
            return value;
        }
    }

    // back
    public static int back(){
        if(last-first == 0){
            return -1;
        }else{
            int value = que[last-1];
            return value;
        }
    }
    public static void main(String args[]) throws Exception {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
        int n = Integer.parseInt(br.readLine());

        for(int i=0; i<n; i++){
            StringTokenizer st = new StringTokenizer(br.readLine());
            String S = st.nextToken();

            switch(S){
                case "push" :
                    push(Integer.parseInt(st.nextToken()));
                    break;
                case "pop" :
                    System.out.println(pop());
                    break;
                case "size" :
                    System.out.println(size());
                    break;
                case "empty" :
                    System.out.println(empty());
                    break;
                case "front" :
                    System.out.println(front());
                    break;
                case "back" :
                    System.out.println(back());
                    break;
            }
        }
    }
}'

 

push : 데이터 삽입

pop : 데이터 출력(출력된 데이터는 삭제)

=> 근데 데이터가 없을 때는 -1 처리

size : 끝 - 시작을 해줘서 사이즈를 구함

empty : 데이터가 들어가 있는지 확인

front : 맨앞에 데이터 출력

back : 맨 끝 데이터 삭제

 

코드를 보면 하나씩 구분되어있어서 조금만 보셔도 구분 가능하실 거에요

반응형