큐에 대한 문제다.
큐를 사용하기 위해 필요한 조건은 둘이다.
LinkedList
Queue
Queue<Integer> queue = new LinkedList<>();
위와 같이 선언하고 기능들은 아래와 같다.
- add
- offer
- poll
- remove
- isEmpty
- size
- peek
이 문제는 back만 잘 처리해주면 문제 없다.
이 문제에서 back은 가장 뒤에 있는 수를 출력하는 명령어다.
그렇다면 push를 할 때, queue에 쌓인 수가 back이므로 변수를 선언해 입력받으면 된다.
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 Hello_world {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
Queue<Integer> queue = new LinkedList<>();
StringBuilder sb = new StringBuilder();
StringTokenizer st;
int N = Integer.parseInt(br.readLine());
int back_value = 0;
while(N-->0) {
st = new StringTokenizer(br.readLine()," ");
String str = st.nextToken();
switch(str) {
case "push":
back_value = Integer.parseInt(st.nextToken());
queue.offer(back_value);
break;
case "pop":
if(queue.isEmpty()) {
sb.append(-1).append('\n');
break;
} else sb.append(queue.poll()).append('\n');
break;
case "size":
sb.append(queue.size()).append('\n');
break;
case "empty":
if(queue.isEmpty()) {
sb.append(1).append('\n');
} else sb.append(0).append('\n');
break;
case "front":
if(queue.isEmpty()) {
sb.append(-1).append('\n');
} else sb.append(queue.peek()).append('\n');
break;
case "back":
if(queue.isEmpty()) {
sb.append(-1).append('\n');
} else sb.append(back_value).append('\n');
break;
}
}
System.out.println(sb);
}
}