Paizaの問題を解いていたら、 (A, B)
をN
回出力するだけなのに、もっとスッキリ書ける方法があった! for
ループを使うのもアリだけど、Array.from()
を使うと一発で解決できるぞ!
問題:(A, B)
をN
回出力せよ!
📌 入力例
3 5 7 // N A B
📌 出力例
(5, 7), (5, 7), (5, 7)
👉 N
回 (A, B)
を出力し、各ペアは カンマ + 半角スペース で区切る。
最初のNGコード: for
ループでゴリ押し
const rl = require('readline').createInterface({ input: process.stdin });
rl.on('line', (input) => {
const [N, A, B] = input.split(" ").map(Number);
const nums = [];
for(let i = 0; i < N; i++){
nums.push(`(${A}, ${B})`);
}
console.log(nums.join(", "));
});
💡 問題点
-
for
ループでN
回push()
するのがちょっと冗長 - 変数
nums
を使わずにもっと短く書ける
改善版: Array.from()
でループを消す!
const rl = require('readline').createInterface({ input: process.stdin });
rl.on('line', (input) => {
const [N, A, B] = input.split(" ").map(Number);
console.log(Array.from({ length: N }, () => `(${A}, ${B})`).join(", "));
});
改善ポイント🚀
✅ Array.from()
で配列を1行で生成
✅ ループ不要でスッキリ!
✅ 可読性UP! 余計な変数なし
気づきメモ📝
-
Array.from({ length: N })
は長さN
の配列を作る -
マッピング関数
() => \(${A}, ${B})``
で各要素をセットループを書かなくても、スマートに配列を作れる!
まとめ
✔ for
ループより Array.from()
を使うと短く書ける
✔ 繰り返し処理はループ以外の方法も考えよう
✔ 可読性が上がるとバグも減る!
こういう小さな工夫が、"書きやすくて読みやすい" コードにつながるぞ!💡