【AtCoder版!蟻本】ABC085 B - Kagami Mochi【set,map】
AtCoder版!蟻本のset,mapの例題としてあげられているABC085 B - Kagami MochiをPythonで解いていきます。
リンク
ABC085 B - Kagami Mochi
問題文
X 段重ねの鏡餅 (X≥1) とは、X 枚の円形の餅を縦に積み重ねたものであって、どの餅もその真下の餅より直径が小さい(一番下の餅を除く)もののことです。例えば、直径 10、8、6 センチメートルの餅をこの順に下から積み重ねると 3 段重ねの鏡餅になり、餅を一枚だけ置くと 1 段重ねの鏡餅になります。
ダックスフンドのルンルンは N 枚の円形の餅を持っていて、そのうち i 枚目の餅の直径は di センチメートルです。これらの餅のうち一部または全部を使って鏡餅を作るとき、最大で何段重ねの鏡餅を作ることができるでしょうか。
制約
・1≤N≤100
・1≤di≤100
・入力値はすべて整数である。
解答例
n = int(input()) D = set() for i in range(n): d = int(input()) D.add(d) ans = len(D) print(ans)
解説
N枚の餅から何段重ねの鏡餅を作ることができるか答える問題です。
同じ直径の餅は重ねることができませんので、set型を用いて重複した直径は無視します。
set型の集合Dへのデータの追加はaddを用いて行いました。
ループで集合Dへのデータ追加を終えると、すべて異なる直径が格納されています。
このDの要素の数が最大の鏡餅の段数になりますので、出力すればOKです。
AtCoder版!蟻本(初級編)の記事リンクページはこちら
ebisuke33.hatenablog.com
リンク