B - Coloring Matrix Editorial by HideN2000

Pythonライブラリを用いた簡素な実装

本問題に取り組む上で最も難しいポイントは,行列の回転を実装するところだと思われますが,これは自前で実装せずともnumpyのnp.rot90()を利用すれば解決できます.

この際,np.rot90()を適用するにあたって,もともとの配列をnumpy.ndarrayに変換する必要があることに注意する必要があります.

また,こうすることで,回転後の行列aと行列bが題意を満たすかを

np.min(b - a) >= 0

のように簡潔に表現することも可能です.

以上の事柄を全て踏まえた場合のPython3による実装例を示します.

import numpy as np

n = int(input())
a_ = [list(map(int, input().split())) for i in range(n)]
b_ = [list(map(int, input().split())) for i in range(n)]

#np.ndarrayに変換
a = np.array(a_)
b = np.array(b_)

#高々4回まで回転させたケースを試せばよい
for i in range(4):
    if np.min(b - a) >= 0:
        print("Yes")
        exit(0)

    #aを回転する
    a = np.rot90(a)

print("No")

(参考)NumPy配列ndarrayを回転するnp.rot90

posted:
last update: