データセット選択メニュー【ランダムアクセス・複数回のランダムアクセス・最大値と最小値・動的配列】
【STEP: 1】コード
reader.on('close', () => {
const [N, M]=lines[0].split(' ').map(Number);
const A = lines[1].split(' ').map(Number);
console.log(A[M - 1]); // A の M 番目の値を出力
});
配列 の index は 0 から始まるので A[M - 1]
が M 番めの値ですね。
【STEP: 2】コード
reader.on('close', () => {
const N = Number(lines[0]);
const A = lines[1].split(' ').map(Number);
const Q = Number(lines[2]);
const B = lines[3].split(' ').map(Number);
for (let i = 0; i < Q; i++) {
console.log(A[B[i]-1]); // A の B_i 番目の値を出力
}
});
配列 A の値の B の 各値番目 は A[B[i] - 1]
ですね。
【STEP: 3】コード
reader.on('close', () => {
const [A, B, C]=lines[0].split(' ').map(e => parseInt(e));
const [MAX, MIN]=[Math.max(A, B, C), Math.min(A, B, C)]; // 最大・最小値 を取得
console.log(MAX - MIN); // 最大 - 最小値 を出力
});
Math.max(),Math.min()
で 最大・最小値 を取得。MAX と MIN の差を求めればOKでした。
【FINAL】コード
reader.on('close', () => {
const [N, Q] = lines[0].split(' ').map(Number);
const A = lines[1].split(' ').map(Number);
for (let i = 2; i < Q + 2; i++) {
const q = lines[i].split(' ').map(Number); // 操作の情報(query)
switch (q[0]) { // q[0] が…
case 0: // q[0] が…
A.push(q[1]); // A の末尾に q[1] を追加
break;
case 1: // 1 なら…
A.pop(); // A の末尾の要素を削除
break;
case 2: // 2 なら…
console.log(A.join(' ')); // A の要素を結合して出力
break;
}
}
});
switch文 で 条件分岐して push()
で末尾に要素を追加。pop()
で末尾の要素を削除。
コメント