[백준 JAVA] 18258번 풀이 - 큐2 (큐는 선입선출)
by mini_minpackage quiz;
import java.io.*;
import java.util.Deque;
import java.util.LinkedList;
import java.util.StringTokenizer;
/**
* 정수를 저장하는 큐를 구현한 다음, 입력으로 주어지는 명령을 처리하는 프로그램을 작성하시오.
*
* 명령은 총 여섯 가지이다.
*
* push X: 정수 X를 큐에 넣는 연산이다.
* pop: 큐에서 가장 앞에 있는 정수를 빼고, 그 수를 출력한다. 만약 큐에 들어있는 정수가 없는 경우에는 -1을 출력한다.
* size: 큐에 들어있는 정수의 개수를 출력한다.
* empty: 큐가 비어있으면 1, 아니면 0을 출력한다.
* front: 큐의 가장 앞에 있는 정수를 출력한다. 만약 큐에 들어있는 정수가 없는 경우에는 -1을 출력한다.
* back: 큐의 가장 뒤에 있는 정수를 출력한다. 만약 큐에 들어있는 정수가 없는 경우에는 -1을 출력한다.
*/
public class _18258 {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
StringBuilder sb = new StringBuilder();
int n = Integer.parseInt(br.readLine());
int back = 0;
Deque<Integer> q = new LinkedList<>();
for(int i=0; i<n; i++){
StringTokenizer st = new StringTokenizer(br.readLine());
String order = st.nextToken();
if(order.equals("push")){
int x = Integer.parseInt(st.nextToken());
q.add(x);
back = x;
} else if (order.equals("pop")){
if(!q.isEmpty()){
sb.append(q.poll()+"\n");
} else {
sb.append(-1+"\n");
}
} else if (order.equals("size")) {
sb.append(q.size()+"\n");
} else if (order.equals("empty")) {
if(!q.isEmpty()){
sb.append(0+"\n");
} else {
sb.append(1+"\n");
}
} else if (order.equals("front")) {
if(!q.isEmpty()){
sb.append(q.peek()+"\n");
} else {
sb.append(-1+"\n");
}
} else if (order.equals("back")) {
if(!q.isEmpty()){
sb.append(back+"\n");
} else {
sb.append(-1+"\n");
}
}
}
bw.write(sb.toString());
bw.close();
}
}
풀이
시간초과 ! 🔥🔥🔥
때문에 너무 힘들었다.
내가 기존에 짠 코드의 시간초과의 원인은 큐의 마지막 정수 값을 출력할 때, toArray() 를 사용했기 때문이었다.
큐 -> 배열 생성 -> 배열의 마지막 index 값 출력
=> 이 과정에서 시간 초과가 나버림...
"큐" 자료구조는 선입선출이 원칙이기 때문에 가장 최근에 push 되는 값이 곧 마지막 정수값이다.
int back =0; 변수 만들어서 출력하고 배열은 삭제했더니 그제서야 성공!
'매일매일 알고리즘 공부' 카테고리의 다른 글
[백준 JAVA] 9093번 풀이 - 단어 뒤집기 (0) | 2023.10.25 |
---|---|
[백준 JAVA] 11866번 풀이 - 요세푸스 문제 0 ✨ (0) | 2023.10.24 |
[백준 JAVA] 2164번 풀이 - 카드2 (큐 문제) (0) | 2023.10.18 |
[백준 JAVA] 18870번 풀이 - 좌표 압축 🐾 (0) | 2023.10.16 |
[백준 JAVA] 12789번 풀이 - 도키도키 간식드리미 (0) | 2023.10.12 |
블로그의 정보
개발자 미니민의 개발로그
mini_min