본문 바로가기

[BOJ] - JAVA

[백준] 10845 : 큐 JAVA 풀이

 

head와 rear를 0으로 초기화해서 head==rear라면 큐가 빈 상태라는 뜻이다.

큐에 값을 넣을 때는 queue[rear]에 데이터를 추가한 후 rear를 1씩 증가시킨다.

(= 큐는 head부터 rear-1까지 데이터가 들어있다. 

 

import java.io.*;
import java.util.*;
public class Main {
	static int[] queue;
	static int head = 0;
	static int rear = 0;
	public static void main(String[] args) throws IOException{
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		int N = Integer.parseInt(br.readLine());
		queue = new int[N];
		StringBuilder sb = new StringBuilder();
		for(int i=0;i<N;i++) {
			StringTokenizer st = new StringTokenizer(br.readLine()," ");
			switch(st.nextToken()) {
			
			case "push":
				push(Integer.parseInt(st.nextToken()));
				break;
			case "pop":
				sb.append(pop()).append('\n');
				break;
			case "size":
				sb.append(size()).append('\n');
				
				break;
			case "empty":
				sb.append(empty()).append('\n');
				break;
			case "front":
				sb.append(front()).append('\n');
				break;
			case "back":
				sb.append(back()).append('\n');
				break;
				
			}
			
		}
		System.out.println(sb);
	}
	
	static void push(int n) {
		queue[rear] = n;
		rear++;
		return;
		
	}
	
	static int pop() {
		if(head==rear) return -1;
		
		int tmp = queue[head];
		head++;
		return tmp;
	}
	
	static int size() {
		return rear - head;
	}
	
	static int empty() {
		if(head==rear) return 1;
		else return 0;
	}
	static int front() {
		if(head==rear) return -1;
		return queue[head];
	}
	static int back() {
		if(head==rear) return -1;
		return queue[rear-1];
	}

}