🌞Algorithm/🔥Baekjoon

[Baekjoon] 1996_지뢰 찾기

뿌야._. 2024. 7. 4. 13:01
문제(출처: https://www.acmicpc.net/problem/1996)

< 지뢰 찾기 >

 

문제 풀이 

 

빈칸마다 상, 하, 좌, 우, 대각선을 살펴보며 지뢰의 개수를 구한다.

 

 my solution (Java)

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;

public class _1996_ { // 지뢰 찾기

	public static void main(String[] args) throws IOException {
		BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
		BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));

		int N = Integer.parseInt(bf.readLine());

		int arr[][] = new int[N][N];
		for (int i = 0; i < N; i++) {
			String str = bf.readLine();
			for (int j = 0; j < N; j++) {
				if (str.charAt(j) == '.') {
					continue;
				}
				arr[i][j] = str.charAt(j) - '0';
			}
		}

		int dx[] = { -1, 1, 0, 0, -1, -1, 1, 1 };
		int dy[] = { 0, 0, -1, 1, -1, 1, -1, 1 };

		for (int i = 0; i < N; i++) {
			for (int j = 0; j < N; j++) {
				if (arr[i][j] > 0) {
					bw.write("*");
					continue;
				}
				int cnt = 0;
				for (int k = 0; k < 8; k++) {
					int x = i + dx[k];
					int y = j + dy[k];
					if (x >= 0 && x < N && y >= 0 && y < N) {
						cnt += arr[x][y];
					}
				}
				if (cnt >= 10) {
					bw.write("M");
				} else {
					bw.write(cnt + "");
				}
			}
			bw.write("\n");
		}
		bw.flush();
	}
}
변수)
N : map 크기
arr : map 정보
dx, dy : 상, 하, 좌, 우, 대각선
cnt : 지뢰 개수

 

map의 크기 N을 입력받는다. map의 크기만큼 정보를 입력받아 arr에 저장한다. map을 살펴보며 지뢰가 있는 칸이라면 *을 출력하고, 빈칸이라면 상, 하, 좌, 우, 대각선을 살펴보며 지뢰 개수를 구한다. 지뢰 개수가 10개 이상이면 M을, 10개보다 작다면 지뢰 개수를 출력한다.



 

'🌞Algorithm > 🔥Baekjoon' 카테고리의 다른 글

[Baekjoon] 1980_햄버거 사랑  (0) 2024.07.08
[Baekjoon] 4821_페이지 세기  (1) 2024.07.05
[Baekjoon] 5766_할아버지는 유명해!  (1) 2024.07.03
[Baekjoon] 1913_달팽이  (0) 2024.07.02
[Baekjoon] 1985_디지털 친구  (0) 2024.07.01