paiza プログラミング

[Ruby|Python]paiza 標準入力メニュー セクション8(小数点数)

paiza_stdin_8

今回はpaiza 標準入力メニューセクション8(小数点数の入力)を解説します。

セクション8は、1行目で要素数nが与えられ、続くn行の文字列を受け取り小数点数に変換して受け取る問題と、1行目または1要素目要素数nが与えられ、半角スペース区切りの文字列小数点数に変換して受け取る問題です。

本記事で使用しているメソッドについて

解答例で使っているメソッドについて、下記の記事で詳しく解説していますので参考にしてみて下さい。

セクション8:1 行目で与えられる N 個の実数の入力 (large)

8-STEP1: 改行区切りでの N 個の文字列の入力 (paizaランク D 相当)

1行目でデータ数nが与えられ、続くn行の入力データ浮動小数点数に変換して受け取り、データの先頭から順に出力する問題です。

入出力例
# 入出力例
INPUT1 = <<~"EOS"
  5
  0.813
  8.13
  81.3
  813
  8138
EOS
OUTPUT1 = <<~"EOS"
  0.813
  8.13
  81.3
  813
  8138
EOS
Ruby解答例

まず、1行目の入力を受け取り、整数に変換し変数nに格納します。
次に、n.timesn回のループを設定し、.map{ gets.to_f } で入力データを浮動小数点型に変換した配列を、配列aryに格納します。

# 解答例
# 1 行目入力
n = gets.to_i
# 続く n 行入力
ary = n.times.map { gets.to_f }
# 出力
puts(ary)
Python解答例
# 解答例
# 1 行目入力
n = int(input())
# 続く n 行入力
ary = [float(input()) for _ in range(n)]
# 出力
[print(f) for f in ary]

 


8-STEP2: 2 行目で与えられる N 個の実数の入力 (paizaランク D 相当)

1行目で要素数nが与えられ、2行目のn個の文字列を半角スペースで分割、浮動小数点型に変換して受け取り、先頭から順に改行区切りで出力する問題です。

入出力例
# 入出力例
INPUT1 = <<~"EOS"
  5
  0.813 8.13 8 1.83 3.81
EOS
OUTPUT1 = <<~"EOS"
  0.813
  8.13
  8
  1.83
  3.81
EOS
Ruby解答例1

1行目で要素数nが与えられ、2行目の文字列を半角スペースで分割、浮動小数点型に変換して配列aryへ格納しています。

# 解答例
# 1 行目入力
n = gets.to_i
# 2 行目入力
ary = gets.split.map(&:to_f)
# 出力
puts(ary)
Python解答例
# 解答例
# 1 行目入力
n = int(input())
# 2 行目入力
ary = [*map(float, input().split())]
# 出力
[print(f) for f in ary]

 


8-STEP3: 1 行目で与えられる N 個の実数の入力 (paizaランク D 相当)

1行の半角スペース区切りでデータが与えられ、1個目の要素を要素数n、2個目以降の文字列データを浮動小数点数に変換して受け取り、先頭から順に出力する問題です。

入出力例
# 入出力例
INPUT1 = <<~"EOS"
  5 8.13 81.3 813 0.813 1.381
EOS
OUTPUT1 = <<~"EOS"
  8.13
  81.3
  813
  0.813
  1.381
EOS
Ruby解答例1

半角スペースで分割した文字列の2個目以降の要素を浮動小数点数に変換して 配列ary へ格納しています。

# 解答例1
# 入力
ary = gets.split[1..].map(&:to_f)
# 出力
puts(ary)
Ruby解答例2

1個目の要素は使いませんが、整数型で受け取る場合、次のようになります。

# 解答例2
# 入力
n, *ary = gets.split
# n を整数型に変換
n = n.to_i
# aryの各要素を浮動小数点型に変換
ary.map!(&:to_f)
# 出力
puts(ary)
Python解答例
# 解答例
# 入力
ary = [*map(float, input().split()[1:])]
# 出力
[print(f) for f in ary]

 


8-STEP4: 2 行目で与えられる N 個の実数の入力 (large) (paizaランク D 相当)

1行目で要素数nが与えられ、2行目のn個の文字列を半角スペースで分割、浮動小数点数に変換して受け取り、先頭から順に改行区切りで出力する問題です。

入出力例
# 入出力例
INPUT1 = <<~"EOS"
  5
  0.813 8.13 8 1.83 3.81
EOS
OUTPUT1 = <<~"EOS"
  0.813
  8.13
  8
  1.83
  3.81
EOS
Ruby解答例1

8-STEP2 と同じコードです。

# 解答例
# 1 行目入力
n = gets.to_i
# 2 行目入力
ary = gets.split.map(&:to_f)
# 出力
puts(ary)
Python解答例
# 解答例
# 1 行目入力
n = int(input())
# 2 行目入力
ary = [*map(float, input().split())]
# 出力
[print(f) for f in ary]

 


8-FINAL: 1 行目で与えられる N 個の実数の入力 (large) (paizaランク D 相当)

1行の半角スペース区切りでデータが与えられ、1個目の要素を要素数n、2個目以降を浮動小数点数に変換して受け取り、先頭から順に出力する問題です。

入出力例
# 入出力例
INPUT1 = <<~"EOS"
  5 8.13 81.3 813 0.813 1.381
EOS
OUTPUT1 = <<~"EOS"
  8.13
  81.3
  813
  0.813
  1.381
EOS
Ruby解答例1

8-STEP3 解答例1と同じコードです。

# 解答例1
# 入力
ary = gets.split[1..].map(&:to_f)
# 出力
puts(ary)
Ruby解答例2

8-STEP3 解答例2と同じコードです。

# 解答例2
# 入力
n, *ary = gets.split
# n を整数型に変換
n = n.to_i
# aryの各要素を浮動小数点型に変換
ary.map!(&:to_f)
# 出力
puts(ary)
Python解答例
# 解答例
# 入力
ary = [*map(float, input().split()[1:])]
# 出力
[print(f) for f in ary]

今回のまとめ

  • 1行目で入力行数n続くn行で入力データが与えられる場合
    • 1行目の入力行数nを整数型で受け取り、n回のループで続くn行の入力to_fメソッドで浮動小数点数に変換して受け取る
  • 半角スペース区切りのデータが与えられ、1個目の要素に要素数nが与えられた場合
    • ary = gets.split[1..].map(&:to_f) で2個目以降の要素を浮動小数点数に変換して受け取る
    • n, *ary = gets.split で1個目の要素と、2個目以降の要素を受け取った後、ary.map!(&:to_f)配列aryの要素を浮動小数点型に変換する

浮動小数点数への変換はto_fメソッドを使うということだけ覚えておけば、今まで通りの方法でデータを受け取ることが出来ました。

次のセクション9は「数値と数値」・「文字列と数値」などの対になるデータの受け取りです!



【PR】アルゴリズム学習でお世話になった本


アルゴリズム関連の技術書は大抵C/C++で書かれていますが、ある程度プログラムが出来れば、処理の流れは理解することが出来ます。






通称: 螺旋本。C++で解説されています。AOJ(Aizu Online Judge)を運営している会津大学の渡辺准教授が書いた本です。データ構造や計算量の内容から丁寧に書いてありますのでアルゴリズム学習の最初の参考書としてオススメです。







通称: 蟻本。C++で解説されています。競技プログラミング中級者の定番書と言われていて、競技プログラミングで利用できる色々なアルゴリズムを学ぶことが出来ます。かなり高度な内容も含まれているので1冊分を完全に理解するのにはかなりの時間がかかりそうですが、手元に置いて何度も読み返しています。







通称: チーター本。C#, C++, JAVAでTopcoderの問題を解説しています。初心者~中級者向けに書かれているので解説が非常に丁寧です。







Python3でアルゴリズムを解説している本です。講義スタイルの本で、図やフローチャートを使ってアルゴリズムとデータ構造についてしっかりと説明されています。代わりにコードは少なめです。Pythonコードが読めなくても十分理解できると思います。


-paiza, プログラミング
-, ,

© 2024 じゃいごテック