아직 만들고 있는 페이지입니다.

이 페이지는 아직 만드는 중입니다. 보이는 내용은 바뀔 수 있습니다.

카드 게임

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

요약
앨리스와 밥이 번갈아 카드를 골라, 색에 맞는 대각선으로 이어진 카드를 모두 제거합니다. 앨리스가 먼저 시작할 때 이기는지 판별합니다.
난이도

어려움10점 중 8점

유형
게임 이론, 동적 계획법, 비트 연산
정답자
아직 제출이 없습니다

문제

앨리스와 밥은 격자판 위의 카드를 번갈아 가며 제거하는 게임을 합니다. 게임을 시작할 때 N×MN \times M 크기 격자판의 각 칸에는 카드가 하나씩 놓여 있고, 각 카드는 빨강, 검정, 초록 중 하나로 칠해져 있습니다. 격자판의 왼쪽 위 칸은 (1,1)(1,1)로, 오른쪽 아래 칸은 (N,M)(N, M)으로 나타냅니다.

앨리스와 밥은 격자판에 놓인 카드 중 하나를 고른 뒤, 아래 규칙에 따라 카드를 제거합니다.

  • 고른 카드가 빨간색이면, 그 카드를 기준으로 기울기가 11인 대각선 방향으로 이어진 '연결된 카드'를 모두 제거합니다.
  • 고른 카드가 파란색이면, 그 카드를 기준으로 기울기가 −1-1인 대각선 방향으로 이어진 '연결된 카드'를 모두 제거합니다.
  • 고른 카드가 초록색이면, 그 카드를 기준으로 두 대각선 방향 모두에서 이어진 '연결된 카드'를 모두 제거합니다.

'연결된 카드'란 고른 카드를 포함하여, 기울기가 11 또는 −1-1인 대각선을 따라 인접하게 연속으로 놓인 카드를 말합니다.

예를 들어 판의 상태가 그림 A.1과 같을 때 (4,3)(4,3)에 놓인 빨간 카드를 고른다고 합시다. 기울기가 11인 대각선의 '연결된 카드'는 그림 A.1의 타원 안에 있는 카드이며, 이 카드들을 제거합니다. 즉 (4,3)(4,3)에서 대각선을 따라 양방향으로 움직일 때 지나가는 칸의 카드가 '연결된 카드'입니다. 다만 고른 칸에서 양방향으로 움직이다가 격자의 경계나 빈 칸을 만나면 이동을 멈춥니다.

그림 A.1. (4,3)(4, 3)의 빨간 카드에 대한 연결된 카드를 보여주는 예시

같은 방식으로, 판의 상태가 그림 A.2와 같을 때 (3,5)(3,5)에 놓인 파란 카드를 고른다고 합시다. 기울기가 −1-1인 대각선의 '연결된 카드'는 그림 A.2의 타원 안에 있는 카드이며, 이 카드들을 제거합니다.

그림 A.2. (3,5)(3, 5)의 파란 카드에 대한 연결된 카드를 보여주는 예시

그림 A.3은 (4,5)(4,5)에 놓인 초록 카드를 골랐을 때 제거되는 카드를 보여줍니다.

그림 A.3. (4,5)(4, 5)의 초록 카드에 대한 연결된 카드를 보여주는 예시

앨리스와 밥은 번갈아 가며 격자판에서 카드를 하나씩 고르고, 고른 카드의 색에 따라 위 규칙대로 연결된 카드를 제거합니다. 마지막 카드를 제거한 사람이 이깁니다. 남은 카드가 없어서 아무 카드도 제거할 수 없는 사람이 집니다. 두 사람 모두 이기는 방법을 잘 알고 있으며 최선을 다해 둡니다.

격자판의 크기와 각 카드의 색이 주어질 때, 앨리스가 먼저 시작하면 이길 수 있는지 판단하는 프로그램을 작성하세요.

입력

첫 줄에 두 정수 NN과 MM (1≤N,M≤251 \le N, M \le 25)이 주어집니다. NN은 격자판의 행 수, MM은 열 수입니다. 이어지는 NN개 줄의 ii번째 줄에는 격자판 ii번째 행에 있는 MM개 카드의 색을 나타내는 길이 MM의 문자열이 주어집니다. 각 문자는 빨강이면 'R', 파랑이면 'B', 초록이면 'G'입니다.

출력

대문자 한 글자로 이루어진 한 줄을 출력합니다. 앨리스가 이기면 'W', 지면 'L'을 출력합니다.

예제3

  1. 예제 1

    입력
    1 3
    BBB
    
    예상 출력
    W
    
  2. 예제 2

    입력
    2 3
    BBG
    RGR
    
    예상 출력
    W
    
  3. 예제 3

    입력
    2 2
    GG
    GG
    
    예상 출력
    L