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];
}
}
'[BOJ] - JAVA' 카테고리의 다른 글
[백준] 2609 : 최대공약수와 최소공배수 (0) | 2022.09.29 |
---|---|
[백준] 10799 : 쇠막대기 JAVA 풀이 (0) | 2022.09.29 |
[백준] 9012 : 괄호 JAVA 풀이 (0) | 2022.09.19 |
[백준] 10828 : 스택 JAVA 풀이 (0) | 2022.09.19 |
[백준] 11444 : 피보나치 수 5 JAVA 풀이 (0) | 2022.09.18 |