TOYPRO解説記事 - マクモン(100点)

1 min read読了の目安(約1300字

1.概要

競技プログラミングのサイト「TOYPRO」の100点問題、マクモンの解説をします!

2.問題

マー君はマクモンというゲームを最近遊んでいます。このマクモンは最初はレベル0なのですが、ログインする日毎にレベルアップしいき、1日目にはレベル1アップ、2日目にはレベル2アップという感じで、ログインx日目にはレベルがxアップします。それでは、n日目には、マクモンのレベルはいくつになってるでしょうか。for文を用いたコードを書いて解いてみましょう。

入力例

n = 3

出力例

レベル6

3.解説

3-1.実装の手順

問題文中にあるようにfor文を用いて実際にシミュレートすることを考えます。
実装の手順としては、

  1. 答えを格納する変数(この記事ではansという名前にする)を用意する
  2. for文を用いてレベルを足す処理を行う
  3. 答えを出力する

とすれば良さそうです。

3-2.for文の使い方

ここでfor文の使い方について復習しておきましょう。
pythonでは

for i in range(n):
    # 処理内容

とすればfor文の中に書いた命令をn回実行することができますが、この時変数iはどのように変化しているのでしょうか?
そこで次のようなプログラムを動かしてみることを考えます。

for i in range(5)
    print(i)

これを実行すると、

0
1
2
3
4

と出力されます。
このことから、

for i in range(n):

の中ではiが0, 1, 2, ..., n - 1と変化していくことが分かります。

3-3.実装例

以上のことを踏まえると、以下のようなプログラムを書くことができます。

n = 3
ans = 0

for i in range(n):
    ans += i + 1

print("レベル" + str(ans))

3-4.おまけ

3-2節でfor文ではiが0, 1, 2, ...と変化していくと述べましたが、1から始まるように書くこともできます。

for i in range(1, 5):
    print(i)

というプログラムを実行してみると、

1
2
3
4

と出力されます。つまり、この問題は次のようなプログラムでも解くことができます。

n = 3
ans = 0

for i in range(1, n+1):
    ans += i

print("レベル" + str(ans))

4.さいごに

この記事を読んでくださりありがとうございます。
記事の間違いを見つけた場合や、質問がある場合、解説を書いてほしい問題がある場合はスクラップで連絡してくれると嬉しいです。