class Solution {
public boolean indexCheck(int[][] board, int i, int j){
return (i>=0 && i<board.length) && (j>=0 && j<board[0].length);
}
public int solution(int[][] board) {
int answer = board.length*board.length;
//board가 1이면 위, 아래, 좌, 우, 대각선 -1로 변경 -> answer 1씩 줄이기
for(int i=0;i<board.length;i++){
for(int j=0;j<board.length;j++){
for(int a = i-1; a<=i+1; a++){
for(int b =j-1; b<=j+1; b++){
if(indexCheck(board,a,b) && board[a][b]!=1 && board[a][b]==0) board[a][b]=-1;
}
}
}
}
}
return answer;
}
}
이렇게 하면 원래 배열이 바뀌기 때문에 좋지 않다.
그럼으로 액자 같이 테두리를 추가해서 안에 있는 값으로만 비교하고 그러면 인덱스를 벗어나는지도 따로 검사를 하지 않아도 된다.
int[][] temp = new int[length+2][length+2];
for(int i=1; i<length+1; i++){
for(int j=1; j<length+1;j++){
temp[i][j]=board[i-1][j-1];
}
}