[Java]伯俊10866号[DEX]Java
白駿10866号
https://www.acmicpc.net/problem/10866
質問する
push frontX:整数Xをインデックスの前に配置します. push backX:整数Xをインデックスの後ろに配置します. pop front:インデックスの一番前の数字を削除し、その数字を出力します.インデックスに整数がない場合は、-1が出力されます. pop back:dexの最後の数字を出力します.インデックスに整数がない場合は、-1が出力されます. size:インデックス内の整数の個数を出力します. 空:インデックスが空の場合、1または0が出力されます. front:インデックスの一番前の整数を出力します.インデックスに整数がない場合は、-1が出力されます. back:インデックスの一番後ろの整数を出力します.インデックスに整数がない場合は、-1が出力されます. 入力
https://www.acmicpc.net/problem/10866
質問する
整数を格納するDequeを実行し、入力としてのコマンドを処理するプログラムを作成します.
命令は全部で8条ある.
入力
1行目に与えられるコマンド数N(1≦N≦10000).2行目からN行目までそれぞれ1つのコマンドがあります.与えられた整数は1以上であり、100000以下である.問題にない命令はない.
しゅつりょく
出力するコマンドが発行されるたびに、各行に1つのコマンドが出力されます.
入力例 15
push_back 1
push_front 2
front
back
size
empty
pop_front
pop_back
pop_front
size
empty
pop_back
push_front 3
empty
front
サンプル出力 2
1
2
0
2
1
-1
0
1
-1
0
3
考える
典型的なDuqueデータ構造とLinkedListのデータ構造を理解する.
一つ一つの命令で解けばいい
削除出力の挿入などのデフォルト機能を使用できます.
TMI
Pass
コード#コード# import java.io.*;
import java.util.*;
public class Main {
static LinkedList<Integer> deque = new LinkedList<>();
static StringBuilder sb = new StringBuilder();
public static void main(String[] args) throws Exception {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st;
int N = Integer.parseInt(br.readLine());
String function = "";
int num = 0;
while(N --> 0) {
st = new StringTokenizer(br.readLine());
if(st.countTokens() > 1) {
function = st.nextToken();
num = Integer.parseInt(st.nextToken());
if(function.startsWith("push_f")) {
push_front(num);
}
else if(function.startsWith("push_b")){
push_back(num);
}
}
else {
function = st.nextToken();
if(function.startsWith("f")) {
front();
}
else if(function.startsWith("b")) {
back();
}
else if(function.startsWith("s")) {
size();
}
else if(function.startsWith("e")) {
empty();
}
else if(function.startsWith("pop_f")) {
pop_front();
}
else if(function.startsWith("pop_b")) {
pop_back();
}
}
}
System.out.println(sb);
} // End of main
static void push_front(int num) {
deque.offerFirst(num);
}
static void push_back(int num) {
deque.offerLast(num);
}
static void size() {
sb.append(deque.size()).append('\n');
}
static void front() {
if(deque.isEmpty()) {
sb.append(-1).append('\n');
}
else {
sb.append(deque.peekFirst()).append('\n');
}
}
static void back() {
if(deque.isEmpty()) {
sb.append(-1).append('\n');
}
else {
sb.append(deque.peekLast()).append('\n');
}
}
static void pop_front() {
if(deque.isEmpty()) {
sb.append(-1).append('\n');
}
else {
sb.append(deque.removeFirst()).append('\n');
}
}
static void pop_back() {
if(deque.isEmpty()) {
sb.append(-1).append('\n');
}
else {
sb.append(deque.removeLast()).append('\n');
}
}
static void empty() {
if(deque.isEmpty()) {
sb.append(1).append('\n');
}
else {
sb.append(0).append('\n');
}
}
} // End of class
Reference
この問題について([Java]伯俊10866号[DEX]Java), 我々は、より多くの情報をここで見つけました
https://velog.io/@lifeisbeautiful/Java-백준-10866번-덱-자바
テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol
出力するコマンドが発行されるたびに、各行に1つのコマンドが出力されます.
入力例 15
push_back 1
push_front 2
front
back
size
empty
pop_front
pop_back
pop_front
size
empty
pop_back
push_front 3
empty
front
サンプル出力 2
1
2
0
2
1
-1
0
1
-1
0
3
考える
典型的なDuqueデータ構造とLinkedListのデータ構造を理解する.
一つ一つの命令で解けばいい
削除出力の挿入などのデフォルト機能を使用できます.
TMI
Pass
コード#コード# import java.io.*;
import java.util.*;
public class Main {
static LinkedList<Integer> deque = new LinkedList<>();
static StringBuilder sb = new StringBuilder();
public static void main(String[] args) throws Exception {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st;
int N = Integer.parseInt(br.readLine());
String function = "";
int num = 0;
while(N --> 0) {
st = new StringTokenizer(br.readLine());
if(st.countTokens() > 1) {
function = st.nextToken();
num = Integer.parseInt(st.nextToken());
if(function.startsWith("push_f")) {
push_front(num);
}
else if(function.startsWith("push_b")){
push_back(num);
}
}
else {
function = st.nextToken();
if(function.startsWith("f")) {
front();
}
else if(function.startsWith("b")) {
back();
}
else if(function.startsWith("s")) {
size();
}
else if(function.startsWith("e")) {
empty();
}
else if(function.startsWith("pop_f")) {
pop_front();
}
else if(function.startsWith("pop_b")) {
pop_back();
}
}
}
System.out.println(sb);
} // End of main
static void push_front(int num) {
deque.offerFirst(num);
}
static void push_back(int num) {
deque.offerLast(num);
}
static void size() {
sb.append(deque.size()).append('\n');
}
static void front() {
if(deque.isEmpty()) {
sb.append(-1).append('\n');
}
else {
sb.append(deque.peekFirst()).append('\n');
}
}
static void back() {
if(deque.isEmpty()) {
sb.append(-1).append('\n');
}
else {
sb.append(deque.peekLast()).append('\n');
}
}
static void pop_front() {
if(deque.isEmpty()) {
sb.append(-1).append('\n');
}
else {
sb.append(deque.removeFirst()).append('\n');
}
}
static void pop_back() {
if(deque.isEmpty()) {
sb.append(-1).append('\n');
}
else {
sb.append(deque.removeLast()).append('\n');
}
}
static void empty() {
if(deque.isEmpty()) {
sb.append(1).append('\n');
}
else {
sb.append(0).append('\n');
}
}
} // End of class
Reference
この問題について([Java]伯俊10866号[DEX]Java), 我々は、より多くの情報をここで見つけました
https://velog.io/@lifeisbeautiful/Java-백준-10866번-덱-자바
テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol
15
push_back 1
push_front 2
front
back
size
empty
pop_front
pop_back
pop_front
size
empty
pop_back
push_front 3
empty
front
2
1
2
0
2
1
-1
0
1
-1
0
3
考える
典型的なDuqueデータ構造とLinkedListのデータ構造を理解する.
一つ一つの命令で解けばいい
削除出力の挿入などのデフォルト機能を使用できます.
TMI
Pass
コード#コード# import java.io.*;
import java.util.*;
public class Main {
static LinkedList<Integer> deque = new LinkedList<>();
static StringBuilder sb = new StringBuilder();
public static void main(String[] args) throws Exception {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st;
int N = Integer.parseInt(br.readLine());
String function = "";
int num = 0;
while(N --> 0) {
st = new StringTokenizer(br.readLine());
if(st.countTokens() > 1) {
function = st.nextToken();
num = Integer.parseInt(st.nextToken());
if(function.startsWith("push_f")) {
push_front(num);
}
else if(function.startsWith("push_b")){
push_back(num);
}
}
else {
function = st.nextToken();
if(function.startsWith("f")) {
front();
}
else if(function.startsWith("b")) {
back();
}
else if(function.startsWith("s")) {
size();
}
else if(function.startsWith("e")) {
empty();
}
else if(function.startsWith("pop_f")) {
pop_front();
}
else if(function.startsWith("pop_b")) {
pop_back();
}
}
}
System.out.println(sb);
} // End of main
static void push_front(int num) {
deque.offerFirst(num);
}
static void push_back(int num) {
deque.offerLast(num);
}
static void size() {
sb.append(deque.size()).append('\n');
}
static void front() {
if(deque.isEmpty()) {
sb.append(-1).append('\n');
}
else {
sb.append(deque.peekFirst()).append('\n');
}
}
static void back() {
if(deque.isEmpty()) {
sb.append(-1).append('\n');
}
else {
sb.append(deque.peekLast()).append('\n');
}
}
static void pop_front() {
if(deque.isEmpty()) {
sb.append(-1).append('\n');
}
else {
sb.append(deque.removeFirst()).append('\n');
}
}
static void pop_back() {
if(deque.isEmpty()) {
sb.append(-1).append('\n');
}
else {
sb.append(deque.removeLast()).append('\n');
}
}
static void empty() {
if(deque.isEmpty()) {
sb.append(1).append('\n');
}
else {
sb.append(0).append('\n');
}
}
} // End of class
Reference
この問題について([Java]伯俊10866号[DEX]Java), 我々は、より多くの情報をここで見つけました
https://velog.io/@lifeisbeautiful/Java-백준-10866번-덱-자바
テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol
import java.io.*;
import java.util.*;
public class Main {
static LinkedList<Integer> deque = new LinkedList<>();
static StringBuilder sb = new StringBuilder();
public static void main(String[] args) throws Exception {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st;
int N = Integer.parseInt(br.readLine());
String function = "";
int num = 0;
while(N --> 0) {
st = new StringTokenizer(br.readLine());
if(st.countTokens() > 1) {
function = st.nextToken();
num = Integer.parseInt(st.nextToken());
if(function.startsWith("push_f")) {
push_front(num);
}
else if(function.startsWith("push_b")){
push_back(num);
}
}
else {
function = st.nextToken();
if(function.startsWith("f")) {
front();
}
else if(function.startsWith("b")) {
back();
}
else if(function.startsWith("s")) {
size();
}
else if(function.startsWith("e")) {
empty();
}
else if(function.startsWith("pop_f")) {
pop_front();
}
else if(function.startsWith("pop_b")) {
pop_back();
}
}
}
System.out.println(sb);
} // End of main
static void push_front(int num) {
deque.offerFirst(num);
}
static void push_back(int num) {
deque.offerLast(num);
}
static void size() {
sb.append(deque.size()).append('\n');
}
static void front() {
if(deque.isEmpty()) {
sb.append(-1).append('\n');
}
else {
sb.append(deque.peekFirst()).append('\n');
}
}
static void back() {
if(deque.isEmpty()) {
sb.append(-1).append('\n');
}
else {
sb.append(deque.peekLast()).append('\n');
}
}
static void pop_front() {
if(deque.isEmpty()) {
sb.append(-1).append('\n');
}
else {
sb.append(deque.removeFirst()).append('\n');
}
}
static void pop_back() {
if(deque.isEmpty()) {
sb.append(-1).append('\n');
}
else {
sb.append(deque.removeLast()).append('\n');
}
}
static void empty() {
if(deque.isEmpty()) {
sb.append(1).append('\n');
}
else {
sb.append(0).append('\n');
}
}
} // End of class
Reference
この問題について([Java]伯俊10866号[DEX]Java), 我々は、より多くの情報をここで見つけました https://velog.io/@lifeisbeautiful/Java-백준-10866번-덱-자바テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol