公式

C - 連続カード分け / Consecutive Card Distribution 解説 by sounansya


まず \(A\) を昇順にソートします。

連番となるカードを全て同じグループに属させることを考えます。

このとき、\(A_i\) と \(A_{i+1}\) が同じグループに属することは \(A_i + 1 = A_{i+1}\) が成り立つことと同値です。したがって、求めるグループ数は \(A_i+1 < A_{i+1}\) が成り立つ \(i\) の個数に \(1\) 足した値となります。

実装例(Python3)

n = int(input())
a = list(map(int, input().split()))
a.sort()
ans = 1
for i in range(1, n):
    ans += a[i] - a[i - 1] != 1
print(ans)

投稿日時:
最終更新: