Information Security Study
[백준] 18258: 큐2 본문
자료구조 중 하나인 큐를 구현하는 문제이다.
package boj;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.EmptyStackException;
import java.util.LinkedList;
import java.util.Queue;
import java.util.Stack;
import java.util.StringTokenizer;
public class Main {
public static void main(String[] args) throws NumberFormatException, IOException, EmptyStackException{
// StringBuilder를 사용하여 결과를 한 번에 출력하기 위한 객체 생성
StringBuilder sb = new StringBuilder();
// BufferedReader를 사용하여 입력을 받기 위한 객체 생성
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
// 저장할 큐 생성
Queue<Integer> queue = new LinkedList<Integer>();
// 입력 횟수
int T = Integer.parseInt(br.readLine());
int current = 0;
// 입력 횟수만큼 반복
for(int i = 0; i < T; i++) {
StringTokenizer st = new StringTokenizer(br.readLine());
String S = st.nextToken();
switch (S) {
case "push":
current = Integer.parseInt(st.nextToken());
queue.offer(current);
break;
case "pop":
if(queue.isEmpty()) sb.append(-1).append('\n');
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(current).append('\n');
break;
}
}
System.out.println(sb);
}
}
큐1과 동일한 문제이다.
해설은 아래 링크된 글을 참고하면 된다.
Queue<Integer> queue = new LinkedList<>();로 사용하는 이유
- Queue 인터페이스는 자바에서 컬렉션 프레임워크의 일부이고 인스턴스를 생성할 수 없다.
- 따라서 Queue 인터페이스를 구현하는 클래스를 사용하여 큐를 생성해야 한다.
- 이때 LinkedList는 Queue 인터페이스를 구현하고 있기 때문에 Queue 변수에 LinkedList의 인스턴스를 할당할 수 있다.
- 인터페이스를 활용하여 다형성을 구현하기 위해 사용한다.
- 유연성을 유지하여 나중에 다른 큐 구현체로 변경이 가능하기 때문이다.
중요한 이유는 마지막 두 가지다.
https://gayeon-l.tistory.com/231
[백준] 10845: 큐
큐를 구현하는 문제이다. 입출력 예제다. package boj; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.EmptyStackException; import java.util.LinkedList; import java.util.Queue; impo
gayeon-l.tistory.com
'Programming > JAVA' 카테고리의 다른 글
[백준] 1158: 요세푸스 문제 (0) | 2024.01.23 |
---|---|
[백준] 2164: 카드2 (2) | 2024.01.23 |
[백준] 10845: 큐 (0) | 2024.01.22 |
[백준] 1874: 스택 수열 (0) | 2024.01.22 |
[백준] 3986: 좋은 단어 (0) | 2024.01.19 |