キーワード
問題
X 段重ねの鏡餅
(X≥1) とは、
X 枚の円形の餅を縦に積み重ねたものであって、どの餅もその真下の餅より直径が小さい(一番下の餅を除く)もののことです。例えば、直径
10、
8、
6 センチメートルの餅をこの順に下から積み重ねると
3 段重ねの鏡餅になり、餅を一枚だけ置くと
1 段重ねの鏡餅になります。
ダックスフンドのルンルンは
N 枚の円形の餅を持っていて、そのうち
i 枚目の餅の直径は
d
i
センチメートルです。これらの餅のうち一部または全部を使って鏡餅を作るとき、最大で何段重ねの鏡餅を作ることができるでしょうか。
制約
1≤N≤100
1≤d
i
≤100
入力値はすべて整数である。
入力
入力は以下の形式で標準入力から与えられる。
N
d
1
:
d
N
出力
作ることのできる鏡餅の最大の段数を出力せよ。
入力例 1
Copy
4
10
8
8
6
出力例 1
Copy
3
直径
10、
8、
6 センチメートルの餅をこの順に下から積み重ねると
3 段重ねの鏡餅になり、これが最大です。
入力例 2
Copy
3
15
15
15
出力例 2
Copy
1
すべての餅の直径が同じときは、
1 段重ねの鏡餅しか作れません。
入力例 3
Copy
7
50
30
50
100
50
80
30
出力例 3
Copy
4
回答
N = int(input())
d = []
for _ in range(N):
d.append(int(input()))
d = set(d)
d = list(d)
print(len(d))
参考
備考
- 比較的綺麗に頭の中にアルゴリズムがわいて、そのままコードにできた。
- 操作としては重複するものを削除しただけ。重複を削除したら、その数全てが昇順になれべれるはずだから、lenを計るだけで十分(多分そう、例外はないはずだよね?)。