動的配列

データセット選択メニュー【ランダムアクセス・複数回のランダムアクセス・最大値と最小値・動的配列】

【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]);  // AM 番目の値を出力
});
hogeちゃんの画像

配列 の 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]);  // AB_i 番目の値を出力
   }
});
hogeちゃんの画像

配列 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);  // 最大 - 最小値 を出力
});
hogeちゃんの画像

Math.max(),Math.min() で 最大・最小値 を取得。MAXMIN の差を求めれば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;
    }
  }
});
hogeちゃんの画像

switch文 で 条件分岐して push()で末尾に要素を追加。pop()で末尾の要素を削除。

コメント