[AtCoder]ABC085B – Kagami Mochi[Ruby]

プログラミング

問題

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
タイトルとURLをコピーしました