問題
X段重ねの鏡餅 (X≥1)とは、X枚の円形の餅を縦に積み重ねたものであって、どの餅もその真下の餅より直径が小さい(一番下の餅を除く)もののことです。例えば、直径10、8、6センチメートルの餅をこの順に下から積み重ねると3段重ねの鏡餅になり、餅を一枚だけ置くと 1段重ねの鏡餅になります。
A君は N枚の円形の餅を持っていて、そのうち i枚目の餅の直径はdiセンチメートルです。これらの餅のうち一部または全部を使って鏡餅を作るとき、最大で何段重ねの鏡餅を作ることができるでしょうか。
入出力例
入力例 4 10 8 8 6 出力例 3 径10、8、6センチメートルの餅をこの順に下から積み重ねると3段重ねの鏡餅になり、これが最大です。
自分の回答
def kagamimochi(mochi)
p mochi.uniq.size
end
mochi = []
amount = gets.chomp.to_i
(1..amount).each do |i|
mochi.push(gets.to_i)
end
kagamimochi(mochi)
今回も難易度はとても低いように思いました。.uniqを知っているかいないかという問題でした。
てこずったのは、入力を受け取る部分です。今まではスペース区切りで入力が与えられていたのに、急に改行で入力してくる形になりました。初めて、データの個数Nを使いました。こういう時に使うのだなと思いました。
#前までの入力例
10 8 8 6
#今回の入力例
10
8
8
6
余談
コードの中で、mochiとしているのですが、配列なので、mochisと複数形にしようと思って調べてみたら、面白い記事を見つけました。可算名詞になるには、長い道のりがあるのですね。
https://6617.teacup.com/m_kubota/bbs/263