roiti46's blog

主に競プロ問題の解説を載せてます

TopCoder SRM 657 Div2 Easy: EightRooks

これも簡単。

問題はこちら

問題

チェス盤に8つのルークが互いに攻撃し合わない位置にいる状態を8ルークという。 与えられた盤面が8ルークを満たしているかどうか答えよ。

解法

各行、各列ごとにルークがぴったり1つだけいるかどうかを確認すればよい。

def isCorrect(self, board):
    for y in xrange(8):
        if board[y].count("R") != 1: return "Incorrect"
    board = ["".join(board[y][x] for y in xrange(8)) for x in xrange(8)]
    for y in xrange(8):
        if board[y].count("R") != 1: return "Incorrect"
        
    return "Correct"

まとめ

Div1にはこの発展問題が出ていた。