問題
マスの中に書いてある数字だけ前に進むとすると、最後まで到達できるかどうかを確認するアルゴリズム。
例えば下のマスであれば、 4 -> 4 -> 2-> 1 -> 1 と進むことで最後まで到達できる。
4 | 4 | 1 | 0 | 0 | 2 | 0 | 1 | 1 |
下のマスは到達できない。
4 | 4 | 1 | 0 | 0 | 0 | 2 | 1 | 1 |
コード
- マスをリストにして考える。
- 最も遠くまで到達することのできるマスを考え、for ループでそのマスを更新していく。
def is_reachable_last_index(A): furthest_index = 0 last_index = len(A) - 1 for i in range(last_index): if i <= furthest_index and furthest_index < last_index: furthest_index = max(furthest_index, A[i] + i) return furthest_index >= last_index A1 = [4, 4, 1, 0, 0, 2, 0, 1, 1] print(is_reachable_last_index(A1)) A2 = [4, 4, 1, 0, 0, 0, 2, 1, 1] print(is_reachable_last_index(A2))