1
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?

FizzBuzz問題 いろんな解き方

Posted at

今回はPaizaの「条件分岐 – FizzBuzz」問題にチャレンジ!過去に解いたことがあるけど、今度はほかの解き方も考えてみる!



🧩問題概要

整数 Nが与えられたとき、

  • 3 の倍数なら "Fizz"
  • 5 の倍数なら "Buzz"
  • 3 と 5 の両方の倍数なら "FizzBuzz"
  • それ以外はそのまま N を出力

入力例:

6

出力例:

Fizz



✅OKパターン①:シンプルなif文

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

rl.once('line',(input) => {
    const N = Number(input);
    
    if(N % 3 === 0 && N % 5 === 0){
        console.log("FizzBuzz");
    }
    
    else if (N % 3 === 0){
        console.log("Fizz");
    }
    
    else if (N % 5 === 0){
        console.log("Buzz");
    }
    
    else{
        console.log(N);
    }
        
    rl.close();

});

💡ポイント:複数条件が重なる場合は、一番厳しい条件を先に書く!



✅OKパターン②:文字列を連結するスタイル

let result = '';
if (N % 3 === 0) result += 'Fizz';
if (N % 5 === 0) result += 'Buzz';
console.log(result || N);

🔹 メリット:コードが短く、冗長なif-elseが不要



✅OKパターン③:関数化して再利用しやすく

function fizzBuzz(n) {
    if (n % 3 === 0 && n % 5 === 0) return "FizzBuzz";
    if (n % 3 === 0) return "Fizz";
    if (n % 5 === 0) return "Buzz";
    return n;
}

console.log(fizzBuzz(N));

🔹 メリット:他の問題でも使えるように、再利用可能なコードに
🔹 テストや別ロジックにも使えるので拡張性バツグン!



✅OKパターン④:三項演算子で1行にギュッと

console.log(
  N % 15 === 0 ? "FizzBuzz" :
  N % 3 === 0 ? "Fizz" :
  N % 5 === 0 ? "Buzz" :
  N
);

🔹 メリット:コード1行で超スッキリ
🔹 デメリット:ネストが深いと読みづらくなるかも



✅OKパターン⑤:マップ(オブジェクト)活用で拡張しやすく

function fizzBuzz(n) {
    let result = '';
    const rules = {
        3: 'Fizz',
        5: 'Buzz',
    };

    for (let key in rules) {
        if (n % Number(key) === 0) {
            result += rules[key];
        }
    }

    return result || n;
}
console.log(fizzBuzz(N));

🔹 メリット:7ならHoge、11ならFooとか簡単に追加できる!
🔹 柔軟性を重視!




📝気づきメモ

  • if-elseは条件の順序を絶対に意識する
  • シンプルな問題でも、複数の正解パターンがある
  • 書き方によって、可読性や拡張性が全然違う!

✨新しく学んだこと

  • %(剰余演算子)を活用して条件をコントロールできる
  • || を使った省略テク:console.log(result || N) で簡潔
  • コードを関数化すると再利用性がUPする
  • オブジェクト(マップ)による条件管理は拡張に最適
  • ネストが深くなりすぎないよう、可読性を保つ意識が大事!

🎯まとめ

PaizaのFizzBuzz問題は「ただの3と5の話」で終わらず、分岐の考え方そのものを学べる最高の教材だった!




僕の失敗談(´;ω;`)と解決法🐈

1
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
1
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?