쥐를 잡자
Top Player제출참여자
문제
크기의 주방 바닥 위에서 쥐 무리(R)와 나도리 일행(C, N)이 치열한 대치를 벌이고 있습니다.
보드는 행 열로 구성되어있습니다. 행 번호는 위에서 아래로 행부터 행까지, 열 번호는 왼쪽에서 오른쪽으로 열부터 열까지이며, 행 열의 칸을 로 표기합니다.
보드의 맨 아래에는 향긋한 치즈가 놓여 있습니다. 쥐들은 치즈를 먹기 위해 주방 바닥 위를 내려오고 있으며, 고양이와 나도리는 이를 막으려 합니다.

각 칸은 빈 칸 ., 쥐 R, 고양이 C, 나도리 N 중 하나의 상태를 가집니다. 초기에는 다음과 같이 말이 배치됩니다.
| 상태 | 개수 | 초기 배치 |
|---|---|---|
쥐 R |
||
고양이 C |
||
나도리 N |
||
빈 칸 . |
대치는 쥐 무리 부터 시작하며, 나도리과 쥐가 번갈아 턴을 진행합니다.
쥐는 자신의 턴에 다음의 행동을 수행합니다.
- 쥐
R이 있는 칸 을 골라 쥐를 으로 이동합니다.

- 은 빈 칸
.이어야 합니다. - 은 빈 칸
.이 됩니다. - 는 쥐
R이 있는 칸이 됩니다.
즉, 쥐들은 한 칸씩 내려오며 치즈를 향해 돌진합니다.
나도리는 자신의 턴에 다음의 행동 중 하나를 수행합니다.
- 고양이
C가 있는 칸 을 골라 고양이를 로 이동합니다.

- 고양이는 상하좌우 및 대각선 방향 중 한 방향을 고른 뒤 이동 경로 위에 다른 말이 없는 직선 경로로 이동할 수 있습니다. (즉, 고양이는 체스의 퀸과 같이 움직입니다)
- 는 빈 칸
.이어야 합니다. - 은 빈 칸
.이 됩니다. - 는 고양이
C가 있는 칸이 됩니다.
- 나도리
N이 있는 칸 을 골라 나도리를 로 이동합니다.

- (즉, 나도리는 체스의 킹과 같이 움직입니다)
- 는 빈 칸
.또는 쥐R이 있는 칸이어야 합니다. - 은 빈 칸
.이 됩니다. - 는 나도리
N이 있는 칸이 됩니다.
대치는 다음 조건 중 하나가 만족될 때 종료됩니다.
- 쥐 중 하나가 행에 도달하면 쥐 무리가 치즈를 획득하며 승리합니다.
- 보드 위에서 쥐가 완전히 사라지면 나도리 일행이 승리합니다.
- 쥐의 턴에 이동 가능한 쥐가 하나도 없다면 나도리 일행이 승리합니다.
보드의 최종 승자가 되기 위한 AI를 설계해주세요!
입력
채점기는 다음의 한 줄 단위로 플레이어와 통신합니다.
| 명령어 | 채점기→플레이어 (입력) | 플레이어→채점기 (출력) | 시간 제한 (ms) | 설명 |
|---|---|---|---|---|
| READY | READY (FIRST | SECOND) |
OK |
3000 |
선공/후공 정보를 알립니다. |
| TURN | TURN my_time opp_time |
MOVE x1 y1 x2 y2 |
my_time |
내 남은 시간과 상대의 남은 시간을 알립니다. 이번 턴에 내가 선택한 수의 , 를 출력합니다. |
| OPP | OPP x1 y1 x2 y2 time |
- | - | 상대가 직전에 둔 수와 사용한 시간을 알립니다. |
| FINISH | FINISH |
- | - | 게임 종료를 알립니다. 플레이어는 추가 출력 없이 프로그램을 정상 종료해야 합니다. |
x1,y1,x2,y2은 정수입니다.my_time,opp_time,time은 정수이며, 시간은 밀리초(millisecond) 단위로 주어집니다.- 모든 출력 후에는 개행문자를 출력한 뒤 버퍼를 flush해야 합니다.
- 시간 제한이 있는 명령에서 출력을 제한 내에 수행하지 않으면 시간 초과(
TLE) 판정을 받습니다. - 출력 형식에 맞지 않는 문자열을 출력하거나, TURN 명령어가 주어질 때 합법적이지 않은 수를 출력하면 런타임 에러(
RE) 판정을 받습니다.
예시
| 선공 입력 | 선공 출력 | 후공 입력 | 후공 출력 |
|---|---|---|---|
READY FIRST |
READY SECOND |
||
OK |
OK |
||
TURN 10000 10000 |
|||
MOVE 1 1 2 1 |
|||
OPP 1 1 2 1 50 |
|||
TURN 10000 9950 |
|||
MOVE 6 6 5 7 |
|||
OPP 6 6 5 7 20 |
|||
TURN 9950 9980 |
|||
... |
|||
FINISH |
FINISH |
샘플 코드
- C20 : sample.c
- CPP20 : sample.cpp
- PYTHON3, PYPY3 : sample.py
제한
- 시간 : 각 플레이어에게 주어지는 첫 번째 TURN 명령어에서
my_time은 ms입니다. - 메모리 : 1024MB
- 채점 환경 : HELP > 채점 환경
