문제1257--지뢰 찾기 게임

1257: 지뢰 찾기 게임

시간제한 : 1.000 sec  메모리제한 : 128 MB

문제 설명

지뢰 찾기 게임은 9x9, 16x16, 16x30 3가지 크기의 지뢰밭에서 진행됩니다. 작은 크기의 지뢰밭부터 각각 10, 40, 99개의 지뢰가 임의로 설치됩니다. 지뢰주변 셀의 값은 주변에 있는 지뢰수로 채워집니다. 이와 같은 지뢰밭이 주어졌을 때, 사용자는 지뢰가 있다고 생각하는 셀에는 깃발을 세우고, 지뢰가 없다고 생각하는 셀은 열 수 있습니다. 사용자가 셀을 열 경우 게임은 다음과 같이 동작합니다.
  • 주변에 지뢰가 하나도 없는 셀: 주변 8개 셀을 반복적으로 열어준다. 이 반복은 주변에 지뢰가 있는 셀을 만날 때까지 반복한다.
  • 주변에 지뢰가 있는 셀: 주변에 있는 지뢰 수를 알려준다.
  • 지뢰가 있는 셀: 게임은 종료한다.
지뢰밭이 주어지고, 사용자가 클릭한 셀 정보가 3개 주어지면 각 셀마다 위에 어떤 경우에 해당하는지 파악하고, 출력 요구사항에 맞게 값을 출력해주세요.

입력 설명

첫 줄에는 테스트케이스 T(1<=T<=50)가 주어집니다. 각 테스트케이스는 여러 줄에 걸쳐 주어집니다. 각 테스트케이스의 첫 줄에 지뢰찾기 게임의 크기를 나타나는 정수 S(0: 소형, 1: 중형, 2: 대형)이 주어집니다. 그다음 지뢰밭의 크기에 따라 지회밭의 정보가 9줄 또는 16줄에 걸쳐 주어집니다. 지뢰밭의 각 셀은 하나의 정수로 주어지며, 지뢰가 있는 셀은 -1, 지뢰가 없는 셀은 주변 셀에 있는 지뢰수를 나타냅니다. 그다음 줄에는 사용자가 선택한 셀 정보가 3개 주어집니다. 각 셀 정보는 행 정보, 열 정보 두 개의 정수값으로 주어집니다.

출력 설명

각 테스트케이스마다 주어진 지뢰밭에서 사용자가 해당 셀을 클릭하였을 때 클릭한 셀마다 다음을 참고하여 정수 하나를 출력해 주세요,.
  • 주변에 지뢰가 하나도 없는 셀: 열게 되는 총 셀의 수를 출력함  
  • 주변에 지뢰가 있는 셀: 주변에 있는 지뢰 수를 출력함
  • 지뢰가 있는 셀: -1을 출력함

입력 예시 Copy

1
0
0 0 1 -1 1 0 0 0 0
1 1 1 1 1 0 0 0 0
-1 1 0 0 0 0 0 0 0
2 2 2 1 1 0 1 1 1
1 -1 2 -1 1 0 1 -1 1
1 1 2 2 2 1 1 1 1
0 1 1 2 -1 2 2 3 2
0 1 -1 2 1 2 -1 -1 -1
0 1 1 1 0 1 2 3 2
2 0 6 6 0 0

출력 예시 Copy

-1 2 6

도움

입력 예시에서 (2, 0)에는 지뢰가 있으므로 -1을 출력하고, (6, 6) 셀은 지뢰가 없는 셀로 주변에 있는 지뢰수가 2이므로 2를 출력하며, (0, 0)은 주변에 지뢰가 없는 셀이므로 (0, 0)을 포함해 (0, 1), (0, 2), (1,0), (1,1), (1,2) 셀을 열게 되므로 6을 출력해야 합니다.

출처/분류