<문제 10866 - 덱>
[문제]
[답안]
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.IOException;
import java.util.ArrayDeque;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
ArrayDeque<Integer> dq = new ArrayDeque<Integer>(); // 덱 선언
StringBuilder sb = new StringBuilder();
int N = Integer.parseInt(br.readLine()); // 주어지는 명령의 수
for (int i = 0; i < N; i++) {
String[] s = br.readLine().split(" "); // 문자열 받기
switch (s[0]) { // 각 경우에 해당하는 값이 들어올 때 구분하기 위한 switch문
case "push_front": {
dq.addFirst(Integer.parseInt(s[1]));
break;
}
case "push_back": {
dq.addLast(Integer.parseInt(s[1]));
break;
}
case "pop_front": {
if (dq.isEmpty()) {
sb.append(-1).append('\n');
}
else {
sb.append(dq.pollFirst()).append('\n');
}
break;
}
case "pop_back": {
if (dq.isEmpty()) {
sb.append(-1).append('\n');
}
else {
sb.append(dq.pollLast()).append('\n');
}
break;
}
case "size": {
sb.append(dq.size()).append('\n');
break;
}
case "empty": {
if (dq.isEmpty()) {
sb.append(1).append('\n');
}
else {
sb.append(0).append('\n');
}
break;
}
case "front": {
if (dq.isEmpty()) {
sb.append(-1).append('\n');
}
else {
sb.append(dq.peekFirst()).append('\n');
}
break;
}
case "back": {
if (dq.isEmpty()) {
sb.append(-1).append('\n');
}
else {
sb.append(dq.peekLast()).append('\n');
}
break;
}
}
}
System.out.println(sb);
br.close();
}
}
출처
https://www.acmicpc.net/problem/10866
10866번: 덱
첫째 줄에 주어지는 명령의 수 N (1 ≤ N ≤ 10,000)이 주어진다. 둘째 줄부터 N개의 줄에는 명령이 하나씩 주어진다. 주어지는 정수는 1보다 크거나 같고, 100,000보다 작거나 같다. 문제에 나와있지
www.acmicpc.net
'알고리즘 풀이(JAVA) > 백준' 카테고리의 다른 글
[백준] 문제번호 5585(거스름돈)(브론즈 2)(java) (0) | 2023.04.22 |
---|---|
[백준] 문제번호 5086(배수와 약수)(브론즈 3)(java) (0) | 2023.04.13 |
[백준] 문제번호 11653(소인수분해)(브론즈 1)(java) (0) | 2023.04.08 |
[백준] 문제번호 25206(너의 평점은)(실버 5)(java) (0) | 2023.04.06 |
[백준] 문제번호 10988(팰린드롬인지 확인하기)(브론즈 2)(java) (0) | 2023.04.06 |