競技プログラミングサイトAtCoderの問題の解答コードがどうしても理解できません。
C: Stones - Tenka1 Programmer Beginner Contest 2019 | AtCoder
N 個の石が一列に並んでおり、すべての石は白か黒で塗られています。 石の状態は長さ N の文字列 S で表され、S の i 文字目が . のとき左から i 個目の石が白であり、# のとき左から i 個目の石が黒であることを表します。
高橋君は、0 個以上の石の色を黒または白に変更し、黒い石のすぐ右に白い石があるような箇所がないようにしたいです。 色を変更する必要のある石の個数の最小値を求めてください。
実行速度の速いコードを見て他の方の考え方を勉強していたのですが、以下のタイプのコードは仕組みが分かりませんでした。
Python
1# TPBC201C - Stones 2n = int(input()) 3s = input() 4ans = 0 5blk = 0 6for i in s: 7 if i == "#": 8 blk += 1 9 else: 10 if blk > 0: 11 ans += 1 12 blk -= 1 13print(ans)
石が黒のとき変数blkでカウントするのは分かるのですが、else以降の考え方が納得できず狐につままれたように感じます。
どなたか解説していただけないでしょうか?
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。