728x90
▶10845 문제 - 큐
- 큐(Queue) : 선입선출(First In First Out, 가장 먼저 들어온것이 가장 먼저 나감)
- 큐선언 방법 : Queue<Integer> que = new LinkedList<>(); -- 링크드리스트사용.
- offer(), add() : 값을 넣을 때 사용하는 함수
- poll(), remove() : 맨 앞의 값 꺼내 확인하기
- peek(), element() : 값을 꺼내지 않고 맨 앞의 값 확인하기
- clear() : 큐에 저장된 값 지우기. 큐 초기화.
▶풀이방법
- 백준 10828(stack)문제와 유사. -> https://shinny.tistory.com/136
import java.util.*;
import java.io.*;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
int count = Integer.parseInt(br.readLine());
Queue<Integer> que = new LinkedList<>();
int num = 0; //queue에 마지막으로 담은 값 저장해 놓기 위함.
for(int i = 0; i < count; i++) {
StringTokenizer st = new StringTokenizer(br.readLine(), " ");
String str = st.nextToken();
switch (str) {
case "push":
num = Integer.parseInt(st.nextToken());
que.add(num);
break;
case "pop":
if(que.isEmpty()) bw.write("-1\n");
else bw.write(que.poll() + "\n");
break;
case "size":
bw.write(que.size() + "\n");
break;
case "empty":
if(que.isEmpty()) bw.write("1\n");
else bw.write("0\n");
break;
case "front":
if(que.isEmpty()) bw.write("-1\n");
else bw.write(que.peek() + "\n");
break;
case "back":
if(que.isEmpty()) bw.write("-1\n");
else bw.write(num + "\n");
break;
}
}
bw.flush();
bw.close();
br.close();
}
}
++ 주의해야할점
- 위의 문제에서 back기능은 마지막으로 큐에 저장된 값을 출력해야함. 그러므로 큐에 마지막으로 입력된 값 저장하기 위한 num 공간 선언해주어야함.
728x90
'Algorithm > BaekJoon[Java]' 카테고리의 다른 글
백준 11656 (0) | 2022.03.25 |
---|---|
백준 10866 (Deque) (0) | 2022.03.24 |
백준 10799 (0) | 2022.03.24 |
백준 9012 (0) | 2022.03.24 |
백준 10828(stack) (0) | 2022.03.24 |