pandasでpaiza問題(配列活用:集団行動 )

スポンサーリンク

paizaへのリンク(配列活用:集団行動 (paizaランク C 相当)

列の逆転、行削除、値の入れ替えがポイント。swapで同値が来た場合に対応するために if b == c でスキップするようにした。

import pandas as pd

n, q = [int(_) for _ in input().split()]

lst = list(range(1, n + 1))
df = pd.DataFrame(lst)

for i in range(q):
    tmp = input()

    if tmp == 'reverse':
        df = df.iloc[::-1]
    elif tmp[:3] == 'res':
        a, b = tmp.split()
        b = int(b)
        if len(df) > b:
            df = df.iloc[0:b]
    elif tmp[:3] == 'swa':
        a, b, c = tmp.split()
        b = int(b)
        c = int(c)
        if b == c:
            continue
        if c < b:
            b, c = c, b
        df_tmp = df.iloc[0:b - 1]
        df_tmp = df_tmp.append(df.iloc[c - 1])
        df_tmp = df_tmp.append(df.iloc[b:c - 1])
        df_tmp = df_tmp.append(df.iloc[b - 1])
        df_tmp = df_tmp.append(df.iloc[c:])
        df = df_tmp

    df.reset_index(inplace=True, drop=True)

for j in range(len(df)):
    print(df.iat[j,0])

コメント

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

Please disable your adblocker or whitelist this site!

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