集合の探索

データセット選択メニュー【集合の探索・重複の削除・重複の判定 1 〜 2・集合の結合】

【STEP: 1】コード

reader.on('close', () => {
   const [N, B] = lines[0].split(' ').map(Number);
   const A = lines[1].split(' ').map(Number);
   console.log(A.includes(B) ? 'Yes' : 'No');  // AB が含まれる場合は ”Yes” 含まれなければ "No" });
hogeちゃんの画像

A.includes(B)AB が含まれているかどうか調べて 三項演算子 で 出力内容を振り分けました。

【STEP: 2】コード

reader.on('close', () => {
   const N = Number(lines[0]);
   const S = new Set(lines[1].split(' ').map(Number));  // 入力をSet()で受取
   console.log(...S);  // S の要素を展開して出力
});
hogeちゃんの画像

セット は 重複する値の保存できないので 入力を セット で受け取って 出力しました。

【STEP: 3】コード

reader.on('close', () => {
   const N = Number(lines[0]);
   const A = lines[1].split(' ').map(Number);
   for (let i = 1; i < N; i++) {
      const a = A.slice(0, i);  // aA[0]〜A[i-1]までの要素の新配列を生成して に保存
      console.log(a.includes(A[i]) ? 'Yes' : 'No');
   }
});
hogeちゃんの画像

A.slice(0, i)で A[0]〜A[i-1]までの要素の新配列を生成して a に保存。aA[i] が含まれるかどうかは a.includes(A[i]) で調べました。

【STEP: 4】コード

reader.on('close', () => {
   const N = Number(lines[0]);
   const A = lines[1].split(' ').map(Number);
   for (let i = 1; i < N; i++) {
      const a = A.slice(0, i);
      console.log(a.includes(A[i]) ? 'Yes' : 'No');
   }
});
hogeちゃんの画像

【STEP: 3】と同じ コード で 問題なくクリアできました。
(・ω・) ?

【FINAL】コード

reader.on('close', () => {
   const N = Number(lines[0]);
   const A = lines[1].split(' ').map(Number);
   const B = lines[2].split(' ').map(Number);
   const S = new Set([...A, ...B]);  // 重複を削除するために 配列 AB を セット S の要素として展開
   const C = [...S];  // S の要素を 配列 C の要素として展開
   C.sort((s, b) => s - b);  // C を昇順に並替え
   console.log(C.join(' '));
});
hogeちゃんの画像

重複を削除するため 配列 A, B の値をセット S の値として 展開。更に S の値を配列 C の要素として展開して 小さい順に並べ替えました。

コメント