제로부터 C# 코딩테스트
프로그래머스 - 안전지대
휘게31
2023. 11. 21. 23:38
728x90
폭탄 주변을 폭탄 위험 지역으로 바꾼 뒤 안전지역 칸수를 구하는 문제.
1. 폭탄 주변을 폭탄 위험지역으로 바꾸기 위한 함수 만들기.
2. 새로운 board 판을 만들기.
- 기존 보드판 그대로 사용하면 보드판 순회 도중 보드판이 업데이트 되기때문에 문제가 생길 수 있음.
3. board 판을 순회하면서 폭탄을 발견하면 위에 만든 함수 실행.
using System;
public class Solution {
public int solution(int[,] board) {
int answer = 0;
int[,] newBoard = new int[board.GetLength(0), board.GetLength(1)];
for(int i = 0 ; i< board.GetLength(0);i++){
for(int j = 0; j<board.GetLength(1);j++){
if(board[i,j] >0){
ChangeIsBomb(i,j,newBoard);
}
}
}
foreach(int i in newBoard){
if(i == 0){
answer ++;
}
}
return answer;
}
void ChangeIsBomb(int x, int y, int[,] board){
for(int i = x-1; i <= x+1; i++){
for(int j = y-1; j <= y+1; j++){
if(i >= 0 && j >= 0 && i < board.GetLength(0) && j < board.GetLength(1)){
if(board[i,j] == 0){
board[i,j] += 1;
}
}
}
}
}
}
728x90