Algorithm
[036] 10845.큐
JEE-JEEE
2024. 3. 25. 17:03
✨ 알고리즘 분류 : 자료 구조 / 큐
https://www.acmicpc.net/problem/10845
10845번: 큐
첫째 줄에 주어지는 명령의 수 N (1 ≤ N ≤ 10,000)이 주어진다. 둘째 줄부터 N개의 줄에는 명령이 하나씩 주어진다. 주어지는 정수는 1보다 크거나 같고, 100,000보다 작거나 같다. 문제에 나와있지
www.acmicpc.net
🪡 문제에서 요구하는 조건 정리
기본적인 큐에 관한 문제이다. 큐의 특성을 이용하여 입출력을 간단히 구현하도록 하는 것이 조건.
🧶 풀이과정
자바에서는 스택과 큐를 함께 사용하는 deque 이 제공된다. 이것을 통하여 풀이를 하면 되고, 크게 어렵지 않은 문제라 설명이 (...!)
저번 스택 문제에서는 if문을 사용했는데, 조금 더 가독성을 높이기 위해 swich를 사용하고, 조금 더 더 쉽게 하기 위해서 하나를 제외하고는 삼항연산자로 구현했다.
🏹 제출코드
package data_structure_part_01;
import java.io.*;
import java.util.ArrayDeque;
import java.util.Deque;
public class Q10845 {
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 n = Integer.parseInt(br.readLine());
Deque<String> deq = new ArrayDeque<>();
for(int i = 0; i < n ; i++){
String[] arr = br.readLine().split(" ");
String str = arr[0];
String enter = ( i != n-1) ? "\n" : "";
switch (str) {
case("push") :
deq.add(arr[1]);
break;
case("pop") :
if(deq.isEmpty()){
bw.write("-1" + enter);
}else{
bw.write(deq.poll() + enter);
}
break;
case("size") :
bw.write(deq.size() + enter);
break;
case("empty") :
bw.write( deq.isEmpty() ? "1" : "0");
bw.write( enter );
break;
case("front") :
bw.write( deq.isEmpty() ? "-1" + enter : deq.peek() + enter);
break;
case("back") :
bw.write( deq.isEmpty() ? "-1" + enter : deq.peekLast() + enter);
}
}
bw.flush();
bw.close();
br.close();
}
}