Header
2020-03-08
2020-04-07

paiza(パイザ)Cランク練習問題|5以上の整数の合計のRubyサンプルコードと解説

2020 03 08 53d32c7da13169c701c38846aaa

paiza(パイザ)Cランク相当の練習問題の解説とサンプルコードの5以上の整数の合計 についてRubyサンプルコードと解説を記載します。

この問題は回答提出するとpaiza公式でRubyのサンプルコードが用意されています。

そのサンプルコードは記載しませんが、併せて確認してみるのもいいと思います。

問題の要件と概要は以下から

5以上の整数の合計 (paizaランク C 相当)

以下から公式の抜粋を元にプログラム化する際の思考の流れとサンプルコードを記載します

関連問題

paizaのスキルチェックの難易度|各ランクの特徴・ランクアップのコツを現役エンジニアが解説

paiza(パイザ)Cランク練習問題|検索履歴のRubyサンプルコードと解説

paiza(パイザ)Cランク練習問題|宝くじのRubyサンプルコードと解説

paiza(パイザ)Cランク練習問題|アルファベット探しのRubyサンプルコードと解説

paiza(パイザ)Cランク練習問題|単語のカウントのRubyサンプルコードと解説

paiza(パイザ)Cランク練習問題|野球の審判のRubyサンプルコードと解説

paiza(パイザ)Cランク練習問題|【競技7】奇数大好き山田さんのRubyサンプルコードと解説

目次



Cランク問題の5以上の整数合計の期待される入出力値

入力値

入力は以下のフォーマットで与えられます。

n (数字の総数)
a_1
a_2
a_3
...
a_i
...
a_n

期待する出力

入力された正の整数a_iのうち5以上のものを全て足しあわせて出力してください。
最後は改行し、余計な文字、空行を含んではいけません。

入出力例(公式から抜粋)

入力例1
1
3

出力例1
0

問題をプログラム化する際の考え方

n (数字の総数)と記載されているので、処理を行う回数を指定する事が分かります。

n (数字の総数)
a_1
a_2
a_3

その為、プログラムとしては入力した回数だけ処理を行うということが分かります。

そして、期待する出力は以下です

期待する出力
入力された正の整数a_iのうち5以上のものを全て足しあわせて出力してください。
最後は改行し、余計な文字、空行を含んではいけません。

出力結果からプログラム化する際に以下が判断できます

1:1つ1つ数字が入力される(文字列(String)ではない)

2:5以上の整数の場合は合計する対象になる

3:5以上の値を合計する

ここでは整数が4以下の処理の要望は記載されていないので

Ruby的にはif文だけでelseは記載しなくていい事が判断できます。

また、5以上の値は合計する対象になるので、対象値を一時的に保存する何かが必要になります。

この何かはプログラム的にはハッシュか配列なので、 今回は配列を利用します。

文字列操作とかは以下に記載してます

RubyのStringクラスとよく使うメソッド

プログラム化する際にRuby的な処理を考える

1:繰り返す処理回数を取得する

2:指定値(5以上の値)を格納する空の配列を生成

3:指定回数処理を行う

4:回数処理の中で、整数を取得する

5:プログラムで5以上か判断する

6:5以上の場合は2で生成した配列へ指定値を追加する

7:処理が終了したら配列内の値を合計する

paizaCランク問題5以上の整数合計のRubyサンプルコード

プログラム化する際に考えた事をRubyに当てはめます。

counts = gets.to_i
integers = []

counts.times do
  int = gets.to_i
  if int > 4
    integers << int
  end
end

puts integers.sum

rubyでterminal上から値を取得するのはgetsメソッドです。

今回はgetsで取得した値は数字なので、to_iメソッドで

数字化します。

その後integersという空配列を生成します。

その後times メソッドで、指定回数繰り返し処理を行うようにします。

繰り返し処理中に値を取得する必要があるので

  int = gets.to_i

で値を再度取得します。

その後入力された値が4超(以上だと4が含まれる)の場合は 配列に入力値を加える処理を行います。

指定回数文終了したら、配列を合計します。

配列合計には.sumメソッドという便利なメソッドがあるので、このメソッドを利用し配列内の値を合計します。

Cランク問題の5以上の整数合計を終えて思ったこと

所謂Fizz Buzzの発展版だと思いました。

数字を設定する問題なので、string(文字列)の処理を意識する必要もなく、if文では4以下の値の処理も指定されていませんので、以下の能力が試されていると推測されます。

1:指定したプログラミング言語の基本的なメソッドを利用できるか

2:要件をプログラム化する流れができるか

上記どちらも抜けるとこの問題は対応できないので、 2は慣れですが、1は一回は必ず操作しないと自分の脳みそから引き出せません。

Rubyで以下のような練習問題を用意しているので、回答できなかった方はまずは以下練習問題を試してみてください

Rubyの練習問題:配列編|初心者・独学者向け入門コンテンツ

Rubyの練習問題:文字列編|初心者・独学者向け入門コンテンツ

Rubyの練習問題:ハッシュ編|初心者・独学者向け入門コンテンツ

Rubyの練習問題:繰り返し処理編|初心者・独学者向け入門コンテンツ

[Rubyの資格試験|Ruby技術者認定試験 (Silver version 2.1)の解説と対策概要

Rubyの練習問題:ファイル操作編|初心者・独学者向け入門コンテンツ

Rubyでバブルソートを行う

Rubyで二分探索(バイナリサーチ)を行う

エンジニア的に話をすると、このような動作はフレームワークを利用しようが、どんなプログラミング言語でも必ず利用するものなので、現場で利用する考え方を学べるので 改めてpaiza(パイザ)は素晴らしいと思いました。

paiza(パイザ)に慣れるとAtCoderアットコーダーもお勧めです

余談ですが大手SIでもFizz Buzzすら回答できないエンジニアも存在するので、現役のエンジニアでもFizz Buzzは難しいと感じる方もいます。

貴方がもしCランクを獲れなくても、多くの方は解けないのであきらめず頑張ってください

その他関連記事

未経験からエンジニアに転職した人間が考える、今からエンジニアに就職する方法

プログラミングポートフォリオとは|未経験からエンジニアに就職した人間が解説

職歴を作るためにSESに就職して、Web系エンジニアへ転職は可能か

業務SESやSIからWeb系エンジニア転職の志望企業の見つけ方

独学プログラミングの勉強手順|未経験からエンジニアに転職した人間が解説

前の記事
次の記事
人気記事
カテゴリーから記事を探す