728x90
반응형
SMALL
해당 문제를 풀기위한 가장 난관은 가장자리에 있는 폭탄은 어떻게 연산할것인가? 이다.
가장자리가 아닌 배열들은 2차배열값안에서 x축과 y축을 각각 x-1 , x , x+1 // y-1 , y , y-1을 폭탄의 범위로 구한후 나머지 0들의 개수를 계산하면 되지만 가장자리는 위와 같은 범위와 다르게 연산해야한다.
📌이때 가장 쉽게 해결 할 수 있는 방법은 원래 범위의 배열보다 상하좌우 전부 1칸씩 확장하는 것이다.
그럼 가장자리도 가운데에 있는 배열처럼 같은 알고리즘으로 해결할 수 있다.
이해하기 쉽게 아래 사진을 첨부해 두었다.
나는 폭탄의 주변을 2로 바꾸는 연산을 수행 후 0의 개수를 파악했다.
이떄 가장자리의 숫자들은 내가 확장한것으로 0이있더라고 세지 않는다.
class Solution {
public int solution(int[][] board) {
int answer = 0;
int len = board.length+2;
int[][] arr = new int[len][len];
for(int i=0; i<board.length;i++) {
for(int j=0; j<board[i].length; j++) {
if(board[i][j]==1) arr[i+1][j+1]=1;
}
}
for(int i=0; i<arr.length;i++) {
for(int j=0 ; j<arr[i].length ; j++) {
if(arr[i][j]==1) {
for(int x = i-1; x<=i+1; x++) {
for(int z= j-1; z<=j+1; z++) {
if(arr[x][z]!=1) {
arr[x][z] =2;
// System.out.println("x :" + x + " z" + z);
}
}
}
}//if
}
}
int cnt=0;
for(int i=1; i<arr.length-1;i++) {
for(int j=1; j<arr.length-1;j++) {
if(arr[i][j]==0) cnt++;
}
}
return cnt;
}
}
728x90
반응형
SMALL
'문제 풀이 > Programmers' 카테고리의 다른 글
[자바]120956 프로그래머스 옹알이 문제 코드 첨부 (1) | 2023.08.12 |
---|---|
프로그래머스42889. 실패율 자바 (0) | 2023.08.09 |
120875. 평행 (자바) 문제에 함정이 있습니다 꼭 읽어보세요! (0) | 2023.08.06 |
181916. 주사위 게임 3 자바 (0) | 2023.07.31 |
181893. 배열 조각하기 자바 (0) | 2023.07.31 |