0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

「ある数でつくられた数列」を解くために:part3 (Set)

Posted at

今回は paiza の「「ある数でつくられた数列」を解くために:part3」の問題に挑戦!


# 問題概要
  • 3つの整数 A_1, A_2, A_3 が与えられる
  • 次に整数 N が与えられ、その後 N 個の整数 b_i が1行ずつ与えられる
  • b_i に対して
    • b_i × A_1
    • b_i × A_2
    • b_i × A_3
      を計算する
  • それら すべての積の中で、異なる値(重複を除いた値)の個数 を求める
  • 求めるのは 値の一覧ではなく「種類数(個数)」

入力形式

  • 1行目:A_1 A_2 A_3
  • 2行目:N
  • 3行目以降:b_1, b_2, ..., b_N(各1行)

出力形式

  • 掛け算で生成される整数の 種類数 を1行で出力



入力例:

1 2 3
5
1
2
3
4
5

出力例:

11




✅OK例:

const rl = require('readline').createInterface({ input: process.stdin });

const lines = [];
rl.on('line', line => lines.push(line));

rl.on('close', () => {
    const A = lines[0].split(' ').map(Number);
    const N = Number(lines[1])
    const b = lines.slice(2).map(Number);
    
    const list = new Set();
    for (let i = 0; i < N; i++) {
        for (let j = 0; j < 3; j++) {
            list.add(A[j] * b[i]);
        }
    }
    
    console.log(list.size);
});

🔍コードの流れ

  • 標準入力を用いて入力を受け取り、受け取った値を変数に代入。
  • 掛け合わせてできる整数を数えるために list (=集合=Set) を準備。
  • N 回のループの中で変数を受け取り、A_1, A_2, A_3 との積を list に追加。
  • 最後に集合のサイズを出力。






📝まとめ

  • 「重複を除いた個数」を求める問題
  • JavaScript では Set が適している
  • Set の特徴
    • 同じ値は1つとして保持される(重複除去)
    • .add() で追加
    • .size で要素数取得
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?