


내가 생각했을때 문제에서 원하는부분
첫째 줄에 주어지는 명령의 수 N (1 ≤ N ≤ 10,000)이 주어진다. 둘째 줄부터 N개의 줄에는 명령이 하나씩 주어진다.
주어지는 정수는 1보다 크거나 같고, 100,000보다 작거나 같다. 문제에 나와있지 않은 명령이 주어지는 경우는 없다.
출력해야하는 명령이 주어질 때마다, 한 줄에 하나씩 출력한다.
내가 이 문제를 보고 생각해본 부분
큐를 그대로 사용해서 구현
코드로 구현
package baekjoon.baekjoon_19;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.LinkedList;
import java.util.Queue;
import java.util.StringTokenizer;
// 백준 10845번 문제
public class Main661 {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int N = Integer.parseInt(br.readLine());
Queue<Integer> queue = new LinkedList<>();
for(int i = 0; i < N; i++) {
StringTokenizer st = new StringTokenizer(br.readLine());
String command = st.nextToken();
switch (command) {
case "push":
int x = Integer.parseInt(st.nextToken());
queue.offer(x);
break;
case "pop":
if (queue.isEmpty()) {
System.out.println(-1);
} else {
System.out.println(queue.poll());
}
break;
case "size":
System.out.println(queue.size());
break;
case "empty":
System.out.println(queue.isEmpty() ? 1 : 0);
break;
case "front":
if (queue.isEmpty()) {
System.out.println(-1);
} else {
System.out.println(queue.peek());
}
break;
case "back":
if (queue.isEmpty()) {
System.out.println(-1);
} else {
int lastElement = 0;
for (Integer element : queue) {
lastElement = element;
}
System.out.println(lastElement);
}
break;
}
}
br.close();
}
}

오늘은 자료구조에서 나오는 큐를 공부하게됐다. 오랜만에 구현하는거라 조금 어렵게 느껴졌다.