행과 열 지우기 게임

시간 제한1초메모리 제한128 MB

요약
n x n 행렬에서 마지막 행이나 열의 합이 짝수일 때만 번갈아 제거할 수 있는 게임에서, n이 최대 1000인 여러 테스트케이스에 대해 최적 플레이 시 승자를 판정합니다.
난이도

보통10점 중 6점

유형
게임 이론, 동적 계획법, 행렬
정답자
아직 제출이 없습니다

문제

빌(Bill)은 컴퓨터 게임을 좋아하고, 게임을 분석해 효율적인 풀이를 찾는 것을 즐긴다. 그는 지금 다음 게임을 연구하고 있다.

게임은 양의 정수로 채워진 n×nn \times n 행렬에서 시작한다. 자기 차례가 되면 플레이어는 현재 행렬의 마지막 행 또는 마지막 열을 지울 수 있는데, 단 그 행 또는 열에 있는 수들의 합이 짝수일 때만 가능하다. 자기 차례에 마지막 행도 마지막 열도 지울 수 없는 플레이어는 패배한다.

빌은 각 게임을 선공 승리(W) 또는 선공 패배(L)로 분류하려고 한다. 선공 승리란 후공이 어떻게 두든 선공이 이기는 전략을 가지고 있다는 뜻이고, 선공 패배란 선공이 무엇을 하든 후공이 이기는 전략을 가지고 있다는 뜻이다.

빌은 뛰어난 프로그래머이기도 해서 게임을 빠르게 분류하는 프로그램을 만들고 싶어 한다. 그를 도와줄 수 있겠는가?

입력

여러 개의 게임이 연달아 주어지며, 표준 입력으로 읽는다.

각 게임은 행렬의 크기 nn(n≤1000n \le 1000)과, 그 뒤에 이어지는 n×nn \times n개의 양의 정수(행 단위로 주어짐)로 이루어진다. 수와 수 사이에는 공백(스페이스와 줄바꿈)이 자유롭게 올 수 있다. 입력은 올바른 형식이며 파일 끝에서 종료된다.

출력

각 게임에 대해, 선공이 이기면 W, 지면 L을 한 줄에 하나씩 출력한다.

예제1

  1. 예제 1

    입력
    2
    2 4
    6 8
    3
    5 4 2 
    1 5 9 
    7 3 8
    
    예상 출력
    L
    W