본문 바로가기

OJ

[BOJ] 4108 지뢰찾기 (JAVA)

https://www.acmicpc.net/problem/4108

 

4108번: 지뢰찾기

C개의 문자들이 포함된 R개의 줄을 출력한다. 단, 모든 '.' 대신 인접한 칸에 위치한 지뢰의 수로 변경해 출력한다. '*' 칸은 그대로 출력한다. 문자 사이에 공백이나 줄 사이에 공백 줄이 있어선

www.acmicpc.net

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.StringTokenizer;

public class Main {
	
    public static void main(String[] args) throws Exception {

        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        StringBuilder sb = new StringBuilder();
        while (true) {
            StringTokenizer st = new StringTokenizer(br.readLine(), " ");
            int R = Integer.parseInt(st.nextToken());
            int C = Integer.parseInt(st.nextToken());
            if (R == 0) break;
            char[][] map = new char[R][C];
            for (int i = 0; i < R; i++) {
                map[i] = br.readLine().toCharArray();
            } // end of input

            for (int i = 0; i < R; i++) {
                for (int j = 0; j < C; j++) {
                    if (map[i][j] == '.') {
                        int cnt = 0;
                        for (int r = i - 1; r <= i + 1; r++) {
                            for (int c = j - 1; c <= j + 1; c++) {
                                if (0 <= r && r < R && 0 <= c && c < C && map[r][c] == '*') cnt++;
                            }
                        }
                        map[i][j] = (char) (cnt + '0');
                    }
                }
            }

            for (int i = 0; i < R; i++) {
                for (int j = 0; j < C; j++) {
                    sb.append(map[i][j]);
                }
                sb.append("\n");
            }
        }

        System.out.print(sb);

    }
	
}

'OJ' 카테고리의 다른 글