Coding Test/백준
백준 10845. 큐
so.so
2021. 3. 2. 01:15
Queue
: FIFO(First in First out으로 선입선출 자료구조이다.
( 즉, 먼저 들어간 데이터가 가장 먼저 나오게 된다.)
- 먼저 입력한 데이터를 front(head)라 하고, 뒤에 입력한 데이터를 rear(tail)이라 한다.
덱이란?
: Double-ended queue의 줄임말로, LinkedList가 이 덱을 implements해서 만든것임
- 앞과 뒤에 삽입과 삭제를 할 수 있음
Queue<integer> queue = new ArrayDeque<>();
Queue<Double> queue = new LinkedList<>();
Queue<String> queue = new PriorityQueue<>();
공유 소스 보기
www.acmicpc.net
처음엔 Scanner로 사용했는데, 시간초과떠서 Buffer로 바꿨다.
import java.util.*;
import java.io.*;
//큐
//줄을 지어 순서대로 처리되는 것 - FIFO
//정수를 저장하는 큐를 구현한 후
//입력으로 주어지는 명령을 처리하는 프로그램?
public class Main{
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
Scanner sc = new Scanner(System.in);
List<Integer> queue = new ArrayList<>();
int n = Integer.parseInt(br.readLine());
while(n-- > 0){
StringTokenizer st = new StringTokenizer(br.readLine());
String temp = st.nextToken();
switch(temp){
//조건 시작
//문자열 비교를 위해 equals
//정수 x를 큐에 넣는 연산
case "push":
queue.add(Integer.parseInt(st.nextToken()));
break;
//큐의 가장 앞에 있는 정수 (없으면 -1)
case "front":
if(queue.isEmpty()){
System.out.println(-1);
}else{
System.out.println(queue.get(0));
}
break;
//큐의 가장 뒤에 있는 정수 (없으면 -1)
case "back":
if(queue.isEmpty()){
System.out.println(-1);
}else{
System.out.println(queue.get(queue.size() - 1));
}
break;
//큐에 들어있는 정수의 개수
case "size":
System.out.println(queue.size());
break;
//큐에서 가장 앞에 있는 정수를 빼고, 그 수 출력 (없으면 -1)
case "pop":
if(queue.isEmpty()){
System.out.println(-1);
}else{
System.out.println(queue.get(0));
queue.remove(0);
}
break;
//큐가 비어있으면 1, 아니면 0
case "empty":
if(queue.isEmpty()){
System.out.println(1);
}else{
System.out.println(0);
}
break;
}
}
}
}