✍️

備忘録:FizzBuzzを解いてみた

2024/05/26に公開

はじめに

最近、atCoderを始めました。
エンジニアとしては知っておいた方が良いコミュニティですが、あまり問題を解いたことがありませんでした。アルゴリズムの勉強にもなるらしく、習慣的にやってみようと思いました。定期的にコードと所感を書くことで、復習用の備忘録にしていきたいので、間違いあればご指摘ください。
では、見ていきましょう!

問題文

1から指定された数値までの整数について、次のルールに従って出力するプログラムを作成してください。
・数が3の倍数であれば「Fizz」と出力する。
・数が5の倍数であれば「Buzz」と出力する。
・数が3の倍数かつ5の倍数であれば「FizzBuzz」と出力する。
その他の数はその数自体を出力する。
制約:数値𝑛は 1 以上の整数です。

コード

Pythonで実装しました。

fizzbuzz.py
def fizzBuzz(n):
    for i in range(1, n + 1):
        if i % 3 == 0 and i % 5 == 0:
            print("FizzBuzz")
        elif i % 3 == 0:
            print("Fizz")
        elif i % 5 == 0:
            print("Buzz")
        else:
            print(i)

fizzBuzz(15)

入力値は15を想定しています。
結果は以下の通り。

1
2
Fizz
4
Buzz
Fizz
7
8
Fizz
Buzz
11
Fizz
13
14
FizzBuzz

解説

1.関数定義
まず、関数化します。入力値を引数として受け取るイメージです。

def fizzBuzz(n):

2.ループ処理

for i in range(1,n+1)

今回は問題文の通り1始まりなので、rangeのstartは1にしています。
rangeの引数については以下の記事を参考にしてください。
https://note.com/s_t877/n/n8e5143de36fb
本来はrange(start, stop, step)となり、3つまで指定が可能みたいですね。
3.条件分岐
ルールに基づいてケース分けすると以下になります。
・3の倍数かつ5の倍数
・3の倍数
・5の倍数
・その他の整数

  • 3の倍数かつ5の倍数
if i % 3 == 0 and i % 5 == 0:
    print("FizzBuzz")
  • 3の倍数
elif i % 3 == 0:
    print("Fizz")
  • 5の倍数
elif i % 5 == 0:
    print("Buzz")
  • その他の整数
else:
    print(i)

まとめ

やっぱり、Pythonはシンプルで良いなぁ

Discussion