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

paiza(パイザ)Cランク相当の練習問題の解説とサンプルコードの5以上の整数の合計 についてRubyサンプルコードと解説を記載します。
この問題は回答提出するとpaiza公式で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的な処理を考える
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は一回は必ず操作しないと自分の脳みそから引き出せません。
関連問題
paizaのスキルチェックの難易度|各ランクの特徴・ランクアップのコツを現役エンジニアが解説
paiza(パイザ)Bランク練習問題|日別訪問者数の最大平均区間のRubyサンプルコードと解説
paiza(パイザ)Bランク練習問題|神経衰弱のRubyサンプルコードと解説
paiza(パイザ)Cランク練習問題|検索履歴のRubyサンプルコードと解説
paiza(パイザ)Cランク練習問題|宝くじのRubyサンプルコードと解説
paiza(パイザ)Cランク練習問題|野球の審判のRubyサンプルコードと解説
paiza(パイザ)Cランク練習問題|アルファベット探しのRubyサンプルコードと解説
paiza(パイザ)Cランク練習問題|単語のカウントのRubyサンプルコードと解説
paiza(パイザ)Cランク練習問題|野球の審判のRubyサンプルコードと解説
paiza(パイザ)Cランク練習問題|【競技7】奇数大好き山田さんのRubyサンプルコードと解説
Rubyで以下のような練習問題を用意しているので、回答できなかった方はまずは以下練習問題を試してみてください
Rubyの練習問題:配列編|初心者・独学者向け入門コンテンツ
Rubyの練習問題:文字列編|初心者・独学者向け入門コンテンツ
Rubyの練習問題:ハッシュ編|初心者・独学者向け入門コンテンツ
Rubyの練習問題:繰り返し処理編|初心者・独学者向け入門コンテンツ
[Rubyの資格試験|Ruby技術者認定試験 (Silver version 2.1)の解説と対策概要
Rubyの練習問題:ファイル操作編|初心者・独学者向け入門コンテンツ
エンジニア的に話をすると、このような動作はフレームワークを利用しようが、どんなプログラミング言語でも必ず利用するものなので、現場で利用する考え方を学べるので 改めてpaiza(パイザ)は素晴らしいと思いました。
paiza(パイザ)に慣れるとAtCoderアットコーダーもお勧めです
余談ですが大手SIでもFizz Buzzすら回答できないエンジニアも存在するので、現役のエンジニアでもFizz Buzzは難しいと感じる方もいます。
貴方がもしCランクを獲れなくても、多くの方は解けないのであきらめず頑張ってください
その他関連記事
未経験からエンジニアに転職した人間が考える、今からエンジニアに就職する方法
客先常駐のエンジニアを辞めたいと思った時は見てほしい|5次受けSES経験者が解説
プログラミングポートフォリオとは|未経験からエンジニアに就職した人間が解説
職歴を作るためにSESに就職して、Web系エンジニアへ転職は可能か