ある問題をといており、以下のコードを書きました。
python
1n,k = map(int,input().split()) 2a = list(map(int, input().split())) 3 4i = 0 5memo = [] 6cnt = 0 7cnt2 = 0 8s = 0 9while True: 10 memo.append(a[i]) 11 i = a[i] 12 if i in memo[:-1]: 13 cnt2 = memo[:-1].index(i) 14 cnt = len(memo[cnt2:]) 15 cntlist = memo[cnt2] 16 break 17s = (k - cnt2)%cnt 18ans = cntlist[s] 19 20print(ans)
実行し、入力を与えると
以下のエラーがでました。
Traceback (most recent call last): File "d.py", line 11, in <module> memo.append(a[i]) IndexError: list index out of range
print([a[i])とすると出力されるので、リスト「a」の参照時にエラーが起きているわけではないとおもったのですが、、
どこでミスがおきているのでしょうか。
よろしくお願いします。
memo.append(a[i])の前にprint(a[i])を入れたらどうなりますか?
4 5
3 2 4 1
という入力を与えると
3
3
1
2
4
Traceback (most recent call last):
File "d.py", line 11, in <module>
print(a[i])
IndexError: list index out of range
と、ある程度の出力の後、エラーがでました。
while文の外でしかprintの出力について調べていませんでした。。。
リストの範囲からiが外れてしまうのは、シンプルに考え方の間違いからでした。。
申し訳ないです。
対応していただき、ありがとうございました。
回答1件
あなたの回答
tips
プレビュー