Header
2020-03-21
2020-09-07

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

2020 03 21 3a9822cda5ea097849711034f62c188f s

paiza(パイザ)Cランク相当の練習問題の解説とサンプルコードの|【競技7】奇数大好き山田についてRubyサンプルコードと解説を記載します。

記載したサンプルコードは動作しましたが、Paizaに公式サンプルコードの記載はないので、他にも記載方法はあると思われます

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

【競技7】奇数大好き山田さん

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

Cランク問題の単語のカウントの入出力値

以下公式抜粋

あなたは奇数が大好きな山田さんと数字の仕分けをすることになりました。
仕分けをする数字が与えられますので、奇数であるものを小さい順に出力してください。

入力値

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

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


1行目で正の整数nが入力され、続くn行の各行で整数が1つずつ入力されます。


入力値最終行の末尾に改行が1つ入ります。

期待する出力

入力された正の整数a_iから奇数であるものを改行区切りで出力してください。
出力する順番は、小さい数字から出力します。

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

入力例1
5
6167
3819
343
554
432

出力例1
343
3819
6167

入力例2
3
4
6
1

出力例2
1

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

入力値で以下のように記載されています。

入力例1
5
6167
3819
343
554
432

1:数字を指定

2:1で入力した回数だけ処理を行うという事が分かる

次に出力例を見ると

出力例1
343
3819
6167

1:出力される値は奇数でなければならない

2:入力された値からそのままの順で出力すると6167,3819, 343 の順で出力されるので、並び替えをしなければならないという事が分かります

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

1:1行目の繰り返し回数の取得

2:回数分の整数を入れる為の空の配列を作成する

3:繰り返し処理の中で回数分の整数(二行目以降の整数)を取得し、空の配列に要素を挿入する

4:2で作成した配列内の要素を並び替える

5:配列内の要素を1つずつ取り出しそれが奇数なのかどうか調べる

6:奇数だった場合は要素を出力させる

奇数だった場合のみ数字を出力するので、偶数だった時の処理は記述しなくても良いと思われます。

paizaCランク問|単語のカウントのRubyサンプルコード

count = gets.chomp.to_i
integers = []

count.times do 
    integer = gets.chomp.to_i
    integers << integer
end 

integers.sort!

integers.each do |integer|
    if integer.odd?
        puts integer
    end
end 

変数 count で繰り返し回数を取得しています。 次にintegersという空配列を作成しています。

次にcount回数分の整数が入力されるので、timesメソッドを使って二行目以降の整数を取得しています。

空配列二行目以降の要素を入れています。

sortメソッドで配列内の要素の並べ替えをし、

each メソッドを使って、配列から要素を取り出し、odd? メソッドを用いて、その整数が奇数の時はputs で要素(該当する整数)を出力しています。

    if integer.odd?
        puts integer
    end

関連問題

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

paiza(パイザ)Bランク練習問題|日別訪問者数の最大平均区間のRubyサンプルコードと解説

paiza(パイザ)Bランク練習問題|神経衰弱のRubyサンプルコードと解説

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

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

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

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

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

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

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

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

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

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

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

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

Rubyでバブルソートを行う

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

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

その他関連記事

緊急事態宣言解除後も客先常駐開発はなくならない|SESエンジニアは転職すべし

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

SESからフリーランスになる際のメリットとデメリット|法人化した人間が解説

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

プログラミングで挫折する人の特徴|未経験からエンジニアに転職した人間が解説

エンジニアを辞めたいと思っている人はまず読んで

あなたにお勧めの記事
前の記事
次の記事