【ABC148 D】「Brick Break」を解く【Python3】

abc148d

コンテスト一覧へ

 

整数aiが書かれた N個のレンガを砕いていって、i番目のものに書かれた整数が「i」になるとすぬけさんは満足します。

すぬけさんが満足するために砕く必要のあるレンガの最小個数を出力する問題です(どのように砕いても不可能な場合は、「-1」を出力)。

左から順番に 1,2,3,… となるように、いらないブロックの数を数えていくと解くことができます。

提出
n = int(input())
a = list(map(int, input().split()))
num = 1
b_num = 0

for i in range(n):
    if num != a[i]:
        b_num += 1
    else:
        num += 1

if b_num == n:
    b_num = -1

print(b_num)

一番左を「1」にするために、「num」の初期値を1にし、配列aを順番に判定していきます。

1以外のブロックは壊して「b_num」に足していきます。

1が見つかった後は、「num」を1増やして、同じ処理を続けます。

結果的に壊したブロックの数「b_num」が答えになります。

【ABC148】解説記事リスト

コンテスト一覧に戻る

コメントを残す

メールアドレスが公開されることはありません。