[20]10866号デッキ
14925 ワード
10866号デッキ
質問する
整数を格納するDequeを実行し、入力としてのコマンドを処理するプログラムを作成します.
命令は全部で8条ある.
入力
1行目に与えられるコマンド数N(1≦N≦10000).2行目からN行目までそれぞれ1つのコマンドがあります.与えられた整数は1以上であり、100000以下である.問題にない命令はない.
しゅつりょく
出力するコマンドが発行されるたびに、各行に1つのコマンドが出力されます.
コピー例入力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
コピー例出力1
2
1
2
0
2
1
-1
0
1
-1
0
3
コピー例入力2
22
front
back
pop_front
pop_back
push_front 1
front
pop_back
push_back 2
back
pop_front
push_front 10
push_front 333
front
back
pop_back
pop_back
push_back 20
push_back 1234
front
back
pop_back
pop_back
コピーサンプル出力2
-1
-1
-1
-1
1
1
2
2
333
10
10
333
20
1234
1234
20
に答える
コード#コード#
//---- 세팅 ----//
const fs = require('fs');
const stdin = (
process.platform === 'linux'
? fs.readFileSync('/dev/stdin').toString()
: `\
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
`
).split('\n');
const input = (() => {
let line = 0;
return () => stdin[line++];
})();
//---- 풀이 -----//
const t = Number(input());
const commands = [];
const arr = [];
const res = [];
[...Array(t)].map(() => {
commands.push(input().split(' '));
});
const commnadFunc = {
push_front: x => arr.unshift(x),
push_back: x => arr.push(x),
pop_front: () => {
arr.length === 0 ? res.push(-1) : res.push(arr.shift());
},
pop_back: () => {
arr.length === 0 ? res.push(-1) : res.push(arr.pop());
},
size: () => res.push(arr.length),
empty: () => {
arr.length === 0 ? res.push(1) : res.push(0);
},
front: () => {
arr.length === 0 ? res.push(-1) : res.push(arr[0]);
},
back: () => {
arr.length === 0 ? res.push(-1) : res.push(arr[arr.length - 1]);
},
};
commands.forEach(command => {
commnadFunc[command[0]](command[1]);
});
console.log(res.join('\n'));
に答える
インデックスの列分割を行う
arr
配列を宣言し,命令の動作を関数として集合のcommnadFunc
オブジェクトを実現する.コマンドで巡回して動作を実行します.
Reference
この問題について([20]10866号デッキ), 我々は、より多くの情報をここで見つけました https://velog.io/@younoah/boj-10866テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol