알고리즘/BOJ

백준 4108번 지뢰찾기

꾸준함. 2018. 6. 28. 17:45

문제 링크입니다: 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