pandasでpaiza問題(二重ループ:格子点)

スポンサーリンク

paizaへのリンク(二重ループ:格子点 (paizaランク C 相当)

x + y < 100 という条件を満たす組み合わせだけでリストを作り、DataFrameに入れる。df1[2]の値は0にしておいて、 (x ^ 3) + (y ^ 3) < 100000 を満たすものだけ掛け算の値を入れるというやり方。最後のiloc[:, 2]というのは、列だけを切り取る頻出の使い方。また、pandasを使わない解き方も下に書いておく。

import pandas as pd

lst1 = []
for x in range(1, 100):
    for y in range(1, 100):
        if x + y < 100:
            lst1.append([x, y])

df1 = pd.DataFrame(lst1)
df1[2] = 0

for i in range(len(df1)):
    tmp = (df1.iat[i, 0] ** 3) + (df1.iat[i, 1] ** 3)
    if tmp < 100000:
        df1.iat[i, 2] = df1.iat[i, 0] * df1.iat[i, 1]

print(df1.iloc[:, 2].max())

普通の解き方

lst1 = []
for x in range(1, 99):
for y in range(1, 99):
if x + y < 100:
if (x**3) + (y**3) < 100000:
lst1.append(x * y)

print(max(lst1))

「pandasでpaiza問題」記事一覧へのリンク

コメント

当ブログのコンテンツが気に入ったら広告ブロックの解除(ホワイトリスト化)をご検討下さい。

Please disable your adblocker or whitelist this site!

タイトルとURLをコピーしました