コンテンツへスキップ

【Ruby基礎】AtCoder Beginner Contest 043 A – キャンディーとN人の子供イージー

■はじめに

Rubyの基礎的な問題をたくさん解くことで基本的な考え方やメソッドの使い方を定着させたい。
基本的にはAtCoderというプログラミングコンテスト(競技プログラミング)の過去問を使う。(AtCoderは難易度が分かれており、難易度の低いA問題かB問題を解いていく)

(5/23時点の方針)
メソッドの切り分け方や値の受け渡しを練習するために、コード長の短さについては気にせずに書くことにする。

■問題

●出典

AtCoder Beginner Contest 043のA問題
https://atcoder.jp/contests/abc043/tasks/abc043_a

●問題文

競プロ幼稚園にはN人の子供がいます。えび先生は、子供たちを一列に並べ、一人目にはキャンディーを1個,二人目には2個,...,N人目にはN個あげることにしました。必要なキャンディーの個数の合計は何個でしょう?

●制約

  • 1≦N≦100

●入力

入力は以下の形式で標準入力から与えられる。

N

●出力

必要なキャンディーの個数の合計を出力せよ。

■回答

●愚直に書く

絶対前に似たようなことをやったことがあるはずだけどスムーズに書けない…。
「何人目」なのかと、そこまでの合計をそれぞれ変数にしてN人目になるまで足し上げていく。

n = gets.to_i
index = 0
answer = 0
while index < n
  index += 1
  answer += index
end
p answer

通った!

●他の方の回答例

あ〜公式があるじゃないか。。。

n = gets.to_i
puts n*(n + 1) / 2

上位層、というかものすごく多くの方がこの解法。
気がつけなくてショック。

さらにもう1つ。sumメソッド一発でした涙。

n = gets.to_i
puts (1..n).sum

●出てきたメソッド等

公式リファレンスを見る訓練。

■振り返りなど

なんと遠回りをしたコードを書いてしまったのかと反省。でもまぁAtCoderでwhileを書くことはあまり無いので練習になった。