🔺 문제
18258번: 큐 2
첫째 줄에 주어지는 명령의 수 N (1 ≤ N ≤ 2,000,000)이 주어진다. 둘째 줄부터 N개의 줄에는 명령이 하나씩 주어진다. 주어지는 정수는 1보다 크거나 같고, 100,000보다 작거나 같다. 문제에 나와있지
www.acmicpc.net
🔺 코드
import java.util.*;
import java.io.*;
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringBuilder sb = new StringBuilder();
Queue<Integer> queue = new LinkedList<>();
int n = Integer.parseInt(br.readLine());
int back = 0;
for(int i=0 ; i < n ; i++) {
String[] str = br.readLine().split(" ");
if(str[0].equals("push")) {
queue.add(Integer.parseInt(str[1]));
back = Integer.parseInt(str[1]);
}
else if(str[0].equals("pop")) {
if(queue.isEmpty()) sb.append(-1).append("\n");
else sb.append(queue.poll()).append("\n");
}
else if(str[0].equals("size")) {
sb.append(queue.size()).append("\n");
}
else if(str[0].equals("empty")) {
if(queue.isEmpty()) sb.append(1).append("\n");
else sb.append(0).append("\n");
}
else if(str[0].equals("front")) {
if(queue.isEmpty()) sb.append(-1).append("\n");
else sb.append(queue.peek()).append("\n");
}
else if(str[0].equals("back")) {
if(queue.isEmpty()) sb.append(-1).append("\n");
else sb.append(back).append("\n");
}
}
System.out.println(sb);
}
}
✅ 해결 아이디어
- 큐 맨 뒤 값 출력 방법 : push할 때 입력받은 값을 변수로 따로 저장(back)해서 갖고와 썼다.
🔺 다른 풀이들
[백준] 18258번 : 큐 2 - JAVA [자바]
www.acmicpc.net/problem/18258 18258번: 큐 2 첫째 줄에 주어지는 명령의 수 N (1 ≤ N ≤ 2,000,000)이 주어진다. 둘째 줄부터 N개의 줄에는 명령이 하나씩 주어진다. 주어지는 정수는 1보다 크거나 같고, 100,000
st-lab.tistory.com
switch - case 문으로 조건문을 수행했고,
양방향 접근이 가능한 큐인 덱을 사용하셨다.
그리고 큐의 마지막 값을 받아올 때는 peekLast()
로 받아오면 된다!!!
이게 맞는 것 같다.
[백준] 18258번 : 큐2 - JAVA [자바]
문제 문제 링크 : https://www.acmicpc.net/problem/18258 수도코드 작성 주어진 명령어를 작성하면 쉽게 해결되는 문제였다. 작성한 코드 import java.io.*; import java.util.ArrayList; import java.util.LinkedList; public class
jjdevelop.tistory.com
LinkedList를 사용하셨다.
그래서 마지막 원소를 가져올 때는 queue.get(queue.size() - 1)
해서 가져오는 식으로!
💬 느낀 점
덱... 재밌는 자료구조인 것 같다... 자주 만나자
(참고)
✔ 덱 사용법 - peekLast()
[JAVA] Queue(큐)& Deque(덱) 라이브러리 정리
Queue(큐) - 선입선출(FIFO) : 먼저 들어온 데이터가 먼저 나간다. - LILO(Last-in, Last- Out) - 스택과는 반대개념 - import java.util.*; - Queue queue = new LinkedList(); ex) Queue q = new LinkedList(); 1. add() : 큐에
gh402.tistory.com
'코테 > 백준' 카테고리의 다른 글
[백준/JAVA] 2750번: 수 정렬하기 (0) | 2023.04.12 |
---|---|
[백준/JAVA] 10808번: 알파벳 개수 (0) | 2023.04.12 |
[백준/JAVA] 9012번: 괄호 (0) | 2023.04.11 |
[백준/JAVA] 11286번: 절댓값 힙 (0) | 2023.04.10 |
[백준/JAVA] 2164번: 카드2 (0) | 2023.04.10 |