Study/Problem Solving
[BOJ_10866] 덱
monitor
2023. 10. 21. 15:20
설명
사실 이 풀이는 좋은 풀이법은 아니다. 아예 API를 쓸 거면 Deque를 사용하면 되는데 이상하게 List를 사용해서 풀었기 때문이다. 아니면 아예 int[]로 직접 구현해서 푸는 것도 자료구조를 익히는데 좋은 방법이 될 것 같다.
코드
package Data_Structure;
import java.io.*;
import java.util.*;
public class BOJ_10866 {
public static void main(String[] args) throws Exception{
BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer tk = new StringTokenizer(in.readLine()," ");
int N = Integer.parseInt(tk.nextToken());
List<Integer> list = new ArrayList<>();
StringBuilder sb = new StringBuilder();
for(int i = 0; i < N; i++){
tk = new StringTokenizer(in.readLine()," ");
String str = tk.nextToken();
if("push_front".equals(str)){
list.add(0,Integer.parseInt(tk.nextToken()));
}
if("push_back".equals(str)){
list.add(Integer.parseInt(tk.nextToken()));
}
if("pop_front".equals(str)){
if(list.size() > 0) {
sb.append(list.get(0) + "\n");
list.remove(0);
}else{
sb.append(-1 + "\n");
}
}
if("pop_back".equals(str)){
if(list.size() > 0) {
sb.append(list.get(list.size() - 1) + "\n");
list.remove(list.size() - 1);
}else{
sb.append(-1 + "\n");
}
}
if("size".equals(str)){
sb.append(list.size() + "\n");
}
if("front".equals(str)){
if(list.size() > 0) {
sb.append(list.get(0) + "\n");
}else{
sb.append(-1 + "\n");
}
}
if("back".equals(str)){
if(list.size() > 0) {
sb.append(list.get(list.size() - 1) + "\n");
}else{
sb.append(-1 + "\n");
}
}
if("empty".equals(str)){
if(list.size() == 0){
sb.append(1 + "\n");
}else{
sb.append(0 + "\n");
}
}
}
System.out.print(sb.toString());
}
}
10866번: 덱
첫째 줄에 주어지는 명령의 수 N (1 ≤ N ≤ 10,000)이 주어진다. 둘째 줄부터 N개의 줄에는 명령이 하나씩 주어진다. 주어지는 정수는 1보다 크거나 같고, 100,000보다 작거나 같다. 문제에 나와있지
www.acmicpc.net