masarumasuのブログ

現役文系大学生プログラマー。使用言語はJavaとRuby。意識高いことから低いことまでいろいろ書きます。

もし次の常駐先が女子エンジニアばっかりだったら「緑川つばめを窮地から救え」解説(Ruby)

masarumasuです。

今回はPaizaにて行われているプログラミング問題が解ける「もし次の常駐先が女子エンジニアばっかりだったら」から「緑川つばめを窮地から救え」の解説をしたいと思います。使用言語はRubyです。

 

ほんとは問題を載せたかったけど、正解した後じゃみれないっぽいので回答だけ公開します。問題の概要は「1から10000000までの適当な数値が入力されるから、それを四捨五入を繰り返して、出来るだけ大きな値にして」という感じです。

a = gets.chomp.to_i
if a<5
puts a
elsif a<10
puts "10"
elsif a<100
b=a.round(-1)
c=b.round(-2)
numbers=[a,b,c]
puts numbers.max
elsif a<1000
b=a.round(-1)
c=b.round(-2)
d=c.round(-3)
numbers=[a,b,c,d]
puts numbers.max
elsif a<10000
b=a.round(-1)
c=b.round(-2)
d=c.round(-3)
e=d.round(-4)
numbers=[a,b,c,d,e]
puts numbers.max
elsif a<100000
b=a.round(-1)
c=b.round(-2)
d=c.round(-3)
e=d.round(-4)
f=e.round(-5)
numbers=[a,b,c,d,e,f]
puts numbers.max
elsif a<1000000
b=a.round(-1)
c=b.round(-2)
d=c.round(-3)
e=d.round(-4)
f=e.round(-5)
g=f.round(-6)
numbers=[a,b,c,d,e,f,g]
puts numbers.max
elsif a<10000000
b=a.round(-1)
c=b.round(-2)
d=c.round(-3)
e=d.round(-4)
f=e.round(-5)
g=f.round(-6)
h=g.round(-7)
numbers=[a,b,c,d,e,f,g,h]
puts numbers.max
end

 

ロジックとしては1から入力された値が取る最大の位まで四捨五入して、その中で一番大きな値を出力するといった感じです。いろいろなパターンを想定して試行錯誤しましたが、結局はシンプルなロジックに落ち着くんやなと思いました。

今回は

if文

roundメソッド

maxメソッド

の知識があれば解けます。