문제
문제 링크 : https://www.acmicpc.net/problem/18258
수도코드 작성
주어진 명령어를 작성하면 쉽게 해결되는 문제였다.
작성한 코드
import java.io.*;
import java.util.ArrayList;
import java.util.LinkedList;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
LinkedList<Integer> queue = new LinkedList<>();
StringBuilder sb = new StringBuilder();
int N = Integer.parseInt(bf.readLine());
for(int i=0; i<N; i++) {
String[] command = bf.readLine().split(" ");
switch (command[0]) {
case "push":
queue.add(Integer.parseInt(command[1]));
break;
case "pop":
if (queue.size() == 0) {
sb.append(-1).append("\n");
} else {
int temp = queue.get(0);
queue.remove(queue.get(0));
sb.append(temp).append("\n");
}
break;
case "size":
sb.append(queue.size()).append("\n");
break;
case "empty":
if (queue.size() == 0) {
sb.append(1).append("\n");
} else {
sb.append(0).append("\n");
}
break;
case "front":
if (queue.size() == 0) {
sb.append(-1).append("\n");
} else {
sb.append(queue.get(0)).append("\n");
}
break;
case "back":
if (queue.size() == 0) {
sb.append(-1).append("\n");
} else {
sb.append(queue.get(queue.size() - 1)).append("\n");
}
break;
}
}
System.out.println(sb);
}
}
보완할 점 / 헷갈린 점
Stack과 마찬가지로 ArrayList로 만들려고 했지만 시간초과가 계속 떠서 이유를 알아보니까 ArrayList가 시간이 많이 걸린다고 했다. 그래서 LinkedList를 이용해서 시간을 줄였고 StringBuilder를 이용해서 출력시간도 줄였다. LinkedList와 StringBuilder를 공부한다고 시간이 조금 더 걸렸던 것 같다.
'알고리즘 > 백준' 카테고리의 다른 글
[백준] 10989번 : 수 정렬하기 3 - JAVA [자바] (0) | 2022.06.17 |
---|---|
[백준] 2750번 : 수 정렬하기 - JAVA [자바] (0) | 2022.06.16 |
[백준] 2164번 : 카드2 - JAVA [자바] (0) | 2022.06.14 |
[백준] 10828번 : 스택 - JAVA [자바] (4) | 2022.06.13 |
[백준] 1037번 : 약수 - JAVA [자바] (0) | 2022.06.09 |