有識者求む、助けてください。
解決したいこと
AtCoderでAtCoder Beginner Contest343 に参加したのですが、わからないところがあるので教えていただけると幸いです。
問題はこちらです。
これに対して僕が提出したコードは以下の通りです。
from math import cbrt, floor
n = int(input()) # 入力受け取り
cn = floor(cbrt(n)) # 入力の立方根の整数値をとる
s = 0
for i in range(cn, 0, -1): # cnから1まで逆順でfor文を回す
j = i ** 3
rj = int(str(j)[::-1])
if j == rj: # 回文になるかどうか試す
s = j # 回文ならsに代入し、forを終わらせる
break
print(s) # 出力
ここでしたいことは、
1からnまでfor文ですると長いけど、nまでの立方数のみを回文かどうか試せばいい。
⇒cnで立方根の整数値をとり、forでcnまでのiの3乗で回文になる立方数を探す。
⇒目的は最大値だから逆順にforを回して回文になったらすぐやめる。
ということです。
認識が間違ってるのか、認識はあってるけどコードが間違ってるか、全部違うか教えてください。
解説やほかの人の答えも見ましたがよくわかりませんでした。