출처 : 반크_백제역사 유적지구 및 이스탐블역사 유적지구
문제]
지뢰 찾기를 해본 적이 있는 독자들이 많을 것이다. 이름은 잘 기억나지 않지만 어떤 운영체제에 이 작고 귀여운 게임이 깔려있다. 지뢰 찾기는 M X N 크기의 지뢰밭에서 모든 지뢰의 의치를 찾아내는 게임이다.
이 게임에서는 각 칸에 인접한 칸에 몇 개의 지뢰가 있는지를 보여준다. 각 칸에는 최대 여덟 개의 인접한 칸이 있을 수 있다. 아래에서 왼쪽에 있는 4X4 지뢰밭에는 지뢰 두 개가 있으며 각각은 '*' 문자로 표시되어 있다. 이 지뢰밭을 방금 설명한 힌트 숫자로 표기하면 오른쪽에 있는 것과 같은 필드가 만들어진다.
* . . . * 1 0 0
. . . . 2 2 1 0
. * . . 1 * 1 0
. . . . 1 1 1 0
입력
입력은 임의 개수의 지뢰밭으로 구성된다. 각 지뢰밭의 첫번째 줄에는 각각 행과 열의 개수를 나타내는 두 개의 정수 n과 m(0<n,m<=100)이 들어있다. 그 다음 줄부터는 n개의 줄에 걸쳐서 각 줄마다 정확하게 m개씩의 문자가 들어있으며 이는 지뢰밭을 처리하지 않는다.
출력
각 지뢰밭에 대해 Field #x:라고 적혀있는 메세지를 출력한다. 이때 x는 필드 번호를 나타내며 1에서 시작한다. 그 다음 줄부터는 n개의 줄에 걸쳐서 '.'문자 대신 그 칸에 인접한 칸에 들었는 지뢰의 개수를 출력한다. 각 지뢰밭에 대한 출력 사이에는 반드시 빈 줄이 하나씩 있어야 한다.
입력 예
4 4
*...
....
.*..
....
3 5
**...
.....
.*...
0 0
출력 예
Field #1:
* 1 0 0
2 2 1 0
1 * 1 0
1 1 1 0
Field #2:
* * 1 0 0
3 3 2 0 0
1 * 1 0 0
출처]
Programming Challenges 알고리즘 트레이닝 북(한빛미디어) : 문제2 지뢰 찾기(Minesweeper) p40
참고풀이]
#include <stdio.h>
int main()
{
char Row[101]={'\0'};//자료를 행단위로 입력받기 위한 배열변수
char Board[102][102]={'\0'};//지뢰밭 보드변수
int n,m;//행과 열 입력변수
int r,c;//행,열 변수 또는 반복변수
int i,j;//인덱스 또는 반복변수
int cnt;//field 카운트 변수
cnt=0;
while(1)
{
cnt++;
scanf("%d%d%*c",&n,&m); //행과 열의 수를 입력받는다.
if(n==0 && m==0) break;
if((n>0 && n<=100) && (n>0 && n<=100))
{
//board를 '0'으로 초기화
for(r=1;r<=n;r++)
for(c=1;c<=m;c++)
Board[r][c]='0';
//자료을 입력받으면서 처리하기
for(r=1;r<=n;r++)
{
scanf("%s%*c",Row);
for(c=1;c<=m;c++)
if(Row[c-1] == '*')
{
for(i=r-1;i<=r+1;i++)
for(j=c-1;j<=c+1;j++)
if(Board[i][j] != '*')
Board[i][j]++;
Board[r][c]='*';
}
}
//결과출력
if(cnt>1) printf("\n");
printf("Field #%d:\n",cnt);
for(r=1;r<=n;r++)
{
for(c=1;c<=m;c++)
putchar(Bord[r][c]);
putchar('\n');
}
}
}
return 0;
}
참고풀이 결과]
대한민국의 아름다운 영토, 독도의 여름
'프로그램 > C언어 1000제' 카테고리의 다른 글
C언어 201제] LCD 디스플레이(LCD Display) (0) | 2024.12.20 |
---|---|
C언어 200제] 여행(The Trip) (0) | 2024.12.20 |
C언어 198제] 3n+1 문제(The 3n+1 Porblem) (0) | 2024.12.17 |
C언어 197제] C언어 콘서트(개정 3판) CHAPTER 7 mini Project Tic-Tac-Toe 게임 p285 (0) | 2024.12.07 |
C언어 196제] 2006년 ICPC 뉴질랜드 NZPC B번 팰린드롬수 (1) | 2024.12.04 |
댓글