🔗 백준 28279 - 덱 2
문제


알고리즘 분류
IDEA
- 앞뒤로 입출력이 발생하므로 이름처럼 덱을 사용해 풀어야 한다.
풀이
1. 덱 선언 및 입력
- LinkedList로 덱을 선언하고, 명령어 1~8 (command)를 입력받는다. 정수가 있을 경우 정수 x(num)을 함께 입력받는다.
Deque<Integer> q = new LinkedList<>();
int n = Integer.parseInt(br.readLine());
for(int i = 0; i<n; i++){
st = new StringTokenizer(br.readLine());
String command = st.nextToken();
int num = 0;
if (st.hasMoreTokens()) {
num = Integer.parseInt(st.nextToken());
}
...
}
2. 명령문에 따른 조건문
if (command.equals("1")){
q.addFirst(num);
} else if (command.equals("2")){
q.addLast(num);
} else if (command.equals("3")){
if (q.isEmpty())
sb.append(-1).append("\n");
else sb.append(q.removeFirst()).append("\n");
} else if (command.equals("4")){
if (q.isEmpty())
sb.append(-1).append("\n");
else sb.append(q.removeLast()).append("\n");
} else if (command.equals("5")){
sb.append(q.size()).append("\n");
} else if (command.equals("6")){
if (q.isEmpty()) sb.append(1).append("\n");
else sb.append(0).append("\n");
} else if (command.equals("7")){
if (q.isEmpty()) sb.append(-1).append("\n");
else sb.append(q.peekFirst()).append("\n");
} else {
if (q.isEmpty()) sb.append(-1).append("\n");
else sb.append(q.peekLast()).append("\n");
}
전체 코드
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Deque;
import java.util.LinkedList;
import java.util.StringTokenizer;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st;
StringBuilder sb = new StringBuilder();
Deque<Integer> q = new LinkedList<>();
int n = Integer.parseInt(br.readLine());
for(int i = 0; i<n; i++){
st = new StringTokenizer(br.readLine());
String command = st.nextToken();
int num = 0;
if (st.hasMoreTokens()) {
num = Integer.parseInt(st.nextToken());
}
if (command.equals("1")){
q.addFirst(num);
} else if (command.equals("2")){
q.addLast(num);
} else if (command.equals("3")){
if (q.isEmpty())
sb.append(-1).append("\n");
else sb.append(q.removeFirst()).append("\n");
} else if (command.equals("4")){
if (q.isEmpty())
sb.append(-1).append("\n");
else sb.append(q.removeLast()).append("\n");
} else if (command.equals("5")){
sb.append(q.size()).append("\n");
} else if (command.equals("6")){
if (q.isEmpty()) sb.append(1).append("\n");
else sb.append(0).append("\n");
} else if (command.equals("7")){
if (q.isEmpty()) sb.append(-1).append("\n");
else sb.append(q.peekFirst()).append("\n");
} else {
if (q.isEmpty()) sb.append(-1).append("\n");
else sb.append(q.peekLast()).append("\n");
}
}
System.out.println(sb);
}
}