考えて競プロする

プログラミングコンテストの問題をどう考えて解いたかを記録していくブログです。使用言語はPython3

ABC085-B - Kagami Mochi を解く

ABC085-B - Kagami Mochi

 

「餅の上にさらに餅を置く場合は、より直径が小さい場合に限る」

というルールに従って、最大何段重ねの鏡餅をつくれるか、という問題

 

与えられた餅の直径を、大きい順にソートして

下から置いていくシミュレーションをして解いていく

 

途中で上に置く餅の直径が条件を満たさなくなった場合

その時点で終了とする

 

以上を踏まえて書いたコードを以下に示す

 

提出したコード

# 入力
N=int(input())

l=[]
for i in range(N):
  l.append(int(input()))

# 降順にソートする
l.sort()
l.reverse()

# 餅の枚数(必ず1枚は置ける)
c=1

# 下にある餅の直径
d=l[0]

for x in l[1:]:
  # 下にある餅より直径が小さい場合は餅を置ける
  if x<d:
    # 下にある餅の直径の値を更新
    d=x
    # 枚数をインクリメント
    c+=1

# 枚数を出力
print(c)

 

提出結果はACでした