結果
| 問題 | No.3114 0→1 |
| コンテスト | |
| ユーザー |
kakur41
|
| 提出日時 | 2025-04-20 06:32:42 |
| 言語 | Python3 (3.15.0 + numpy 2.5.4 + scipy 1.18.1 + ACL) |
| 結果 |
WJ
不安定
(最新)
AC
(最初)
|
| 実行時間 | - |
| コード長 | 2,248 bytes |
| 記録 | |
| 最終ジャッジ日時 | 2026-10-16 03:26:52 |
|
ジャッジサーバーID (参考情報) |
judge1_0 / judge5_0 |
(要ログイン)
ソースコード
import sys
def solve():
"""
問題を解くメイン関数
"""
n = int(sys.stdin.readline())
# 文字列をリストに変換して変更可能にする
s = list(sys.stdin.readline().strip())
changes = 0 # 操作回数をカウントする変数
# 文字列を左から右へ走査
for i in range(n):
# インデックス i で終わる禁止パターン '010' をチェック
# s[i] が '0' であり、かつ s[i-1] が '1', s[i-2] が '0' の場合
if i >= 2 and s[i-2] == '0' and s[i-1] == '1' and s[i] == '0':
s[i] = '1' # パターンの末尾の '0' を '1' に変更
changes += 1 # 操作回数をインクリメント
continue # このインデックスでの処理は完了
# インデックス i で終わる禁止パターン '100' をチェック
# s[i] が '0' であり、かつ s[i-1] が '0', s[i-2] が '1' の場合
# 注意: s[i] は上の '010' チェックで '1' に変更されている可能性があるため、
# ここでは elif ではなく if を使う(あるいは '010' チェックを優先する)
# 上の continue により、'010' が見つかった場合はここは実行されない
if i >= 2 and s[i-2] == '1' and s[i-1] == '0' and s[i] == '0':
s[i] = '1' # パターンの末尾の '0' を '1' に変更
changes += 1 # 操作回数をインクリメント
continue # このインデックスでの処理は完了
# インデックス i で終わる禁止パターン '00' をチェック
# s[i] が '0' であり、かつ s[i-1] が '0' の場合
# 注意: s[i] は上のチェックで '1' に変更されている可能性がある
# 上の continue により、'010' または '100' が見つかった場合はここは実行されない
if i >= 1 and s[i-1] == '0' and s[i] == '0':
s[i] = '1' # パターンの末尾の '0' を '1' に変更
changes += 1 # 操作回数をインクリメント
continue # このインデックスでの処理は完了
# 最終的な操作回数を出力
print(changes)
# 関数を実行
solve()
kakur41