문제 링크입니다: https://www.acmicpc.net/problem/4108
간단한 Brute Force 문제였습니다.
입력받은 지뢰 지도와 예슬이가 그릴 지뢰 지도를 저장하는 배열 두개를 선언하는 것이 핵심이였습니다.
#include <iostream>
#include <string>
using namespace std;
const int MAX = 100 + 1;
typedef struct
{
int y, x;
}Dir;
Dir moveDir[8] = { {-1, 0}, {-1, 1}, {0, 1}, {1, 1}, {1, 0}, {1, -1}, {0, -1}, {-1, -1}};
int R, C;
string input[MAX]; //입력받은 지뢰 지도
char mineMap[MAX][MAX]; //예슬이가 그릴 지뢰 지도
void findMine(void)
{
for (int y = 0; y < R; y++)
{
for (int x = 0; x < C; x++)
{
if (input[y][x] == '*') //지뢰면 지뢰로 표기
mineMap[y][x] = '*';
else
{
int sum = 0;
//8방향을 살피며 주변에 몇 개의 지뢰가 있는지 확인
for (int i = 0; i < 8; i++)
{
int nextY = y + moveDir[i].y;
int nextX = x + moveDir[i].x;
if (0 <= nextY && nextY < R && 0 <= nextX && nextX < C) //범위 내에 있고
if (input[nextY][nextX] == '*') //지뢰가 있으면
sum++;
}
mineMap[y][x] = sum + '0';
}
}
}
}
int main(void)
{
while (1)
{
cin >> R >> C;
if (R == 0 && C == 0)
break;
for (int i = 0; i < R; i++)
cin >> input[i];
findMine();
for (int i = 0; i < R; i++)
{
for (int j = 0; j < C; j++)
cout << mineMap[i][j];
cout << endl;
}
}
return 0;
}
개발환경:Visual Studio 2017
지적, 조언, 질문 환영입니다! 댓글 남겨주세요~
'알고리즘 > BOJ' 카테고리의 다른 글
백준 14500번 테트로미노 (4) | 2018.06.29 |
---|---|
백준 4781번 사탕 가게 (0) | 2018.06.29 |
백준 9184번 신나는 함수 실행 (4) | 2018.06.28 |
백준 1793번 타일링 (0) | 2018.06.28 |
백준 5719번 거의 최단 경로 (7) | 2018.06.27 |