알고리즘 연습
[10845] 큐 - Java
밀깜
2022. 2. 10. 16:07
1. 문제
https://www.acmicpc.net/problem/10845
10845번: 큐
첫째 줄에 주어지는 명령의 수 N (1 ≤ N ≤ 10,000)이 주어진다. 둘째 줄부터 N개의 줄에는 명령이 하나씩 주어진다. 주어지는 정수는 1보다 크거나 같고, 100,000보다 작거나 같다. 문제에 나와있지
www.acmicpc.net
2. 풀이
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.StringTokenizer;
public class Main {
// Make queue using ArrayList
private int size;
private ArrayList<Integer> queue;
// Constructor
public Main() {
this.size = 0;
this.queue = new ArrayList<Integer>();
}
public static void main(String[] args) throws NumberFormatException, IOException {
// Import classes
Main que = new Main();
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringBuilder sb = new StringBuilder();
StringTokenizer st;
// Read cases
int cases = Integer.parseInt(br.readLine());
int result = 0;
for(int i = 0; i < cases; i++) {
st = new StringTokenizer(br.readLine(), " ");
String command = st.nextToken();
if(command.equals("push")) {
que.push(Integer.parseInt(st.nextToken()));
continue;
}
else if(command.equals("pop")) {
result = que.pop();
}
else if(command.equals("size")) {
result = que.size();
}
else if(command.equals("empty")) {
result = que.empty();
}
else if(command.equals("front")) {
result = que.front();
}
else if(command.equals("back")) {
result = que.back();
}
sb.append(result).append('\n');
}
// Print result
System.out.println(sb);
}
// push method
public void push(int number) {
queue.add(number);
size++;
}
// pop method
public int pop() {
if(size() == 0) {
return -1;
}
else {
int result = queue.get(0);
queue.remove(0);
size--;
return result;
}
}
// size method
public int size() {
return size;
}
// empty method
public int empty() {
if(size == 0) {
return 1;
}
else {
return 0;
}
}
// front method
public int front() {
if(size() == 0) {
return -1;
}
else {
return queue.get(0);
}
}
// back method
public int back() {
if(size() == 0) {
return -1;
}
else {
return queue.get(size - 1);
}
}
}
3. 배운점
4. 개선할 점