0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

atcoder練習(2024.11.15)

Posted at

キーワード

問題

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を計るだけで十分(多分そう、例外はないはずだよね?)。
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?