본문 바로가기
백준/1 - 5000

[백준] 4396번 : 지뢰 찾기(JAVA)

by lms0806 2021. 9. 5.
728x90
반응형

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

 

4396번: 지뢰 찾기

첫 번째 줄에는 10보다 작거나 같은 양의 정수 n이 입력된다. 다음 n개의 줄은 지뢰의 위치를 나타낸다. 각각의 줄은 n개의 문자를 사용하여 한 행을 나타낸다. 온점(.)은 지뢰가 없는 지점이며 별

www.acmicpc.net

풀이

두번째로 입력받은 배열에 0이 들어가 있으면 그 위치 주위에 폭탄이 있을시 그 갯수를 추가하여 만들면 된다.

※ 0인 위치에 폭탄이 있을 경우 게임에 실패한걸로 간주되어 *의 위치 전부에 *를 추가하면된다.

 

소스코드

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

public class Main {
	public static void main(String[] args) throws IOException{
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); 
		
		int n = Integer.parseInt(br.readLine());
		
		char[][] board = new char[n][n], result = new char[n][n];
		
		for(int i = 0; i < n; i++) {
			board[i] = br.readLine().toCharArray();
		}
		
		for(int i = 0; i < n; i++) {
			result[i] = br.readLine().toCharArray();
		}
		
		int[] dx = {-1,-1,-1,0,0,0,1,1,1}, dy = {-1,0,1,-1,0,1,-1,0,1};
		
		boolean b = false;
		for(int i = 0; i < n; i++) {
			for(int j = 0; j < n; j++) {
				int count = 0;
				if(result[i][j] == 'x') {
					if(board[i][j] == '*') {
						b = true;
					}
					else {
						for(int k = 0; k < dx.length; k++) {
							int x = i + dx[k], y = j + dy[k];
							
							if(x >= 0 && x < n && y >= 0 && y < n && board[x][y] == '*') {
								count++;
							}
						}
						result[i][j] = (char)(count + '0');
					}
				}
				else {
					result[i][j] = '.';
				}
			}
		}
		
		if(b) {
			for(int i = 0; i < n; i++) {
				for(int j = 0; j < n; j++) {
					if(board[i][j] == '*') {
						result[i][j] = '*';
					}
				}
			}
		}
		
		StringBuilder sb = new StringBuilder();
		for(int i = 0; i < n; i++) {
			for(int j = 0; j < n; j++) {
				sb.append(result[i][j]);
			}
			sb.append("\n");
		}
		System.out.print(sb);
	}
}
728x90
반응형

'백준 > 1 - 5000' 카테고리의 다른 글

[백준] 1307번 : 마방진(JAVA)  (0) 2021.09.26
[백준] 2210번 : 숫자판 점프(JAVA)  (0) 2021.09.10
[백준] 1662번 : 압축(JAVA)  (0) 2021.08.30
[백준] 1701번 : Cubeditor(JAVA)  (2) 2021.08.26
[백준] 1786번 : 찾기(JAVA)  (0) 2021.08.26

댓글