😎 링크
프로그래머스 - 안전지대
😎 고려할 사항
- 가장 기본적인 dx, dy 테크닉
- 단, 상우좌하가 아니라 대각선 방향으로도 탐색해야함을 기억하자
- 배열 범위 바깥 쪽은 탐색할 수 없다
😎 소스코드
function solution(board) {
var answer = 0;
dx = [0, 1, -1, 0, -1, 1, -1, 1];
dy = [-1, 0, 0, 1, -1, -1, 1, 1];
for (let i = 0; i < board.length; i++) {
for (let j = 0; j < board[i].length; j++) {
let flag = false;
if (board[i][j] === 1) {
flag = true;
} else {
for (let k = 0; k < 8; k++) {
if (
i + dx[k] >= 0 &&
i + dx[k] < board.length &&
j + dy[k] >= 0 &&
j + dy[k] < board.length
) {
if (board[i + dx[k]][j + dy[k]] === 1) {
flag = true;
}
}
}
}
if (!flag) {
answer += 1;
}
}
}
return answer;
}
😎 문법 정리
for ... in
: for계열 문법 중 하나인 for...in 문은 인덱스 타입이 String이므로 의도한 대로 결과가 안 나올 가능성이 높다. APS에서는 친숙한 기본 for문을 사용하자