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

abc148d

「AtCoder」解説一覧へ

整数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】解説記事リスト

「AtCoder」解説一覧に戻る

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です