[프로그래머스 LV.0] (Javascript) 안전지대

Hannah Lee·2023년 1월 19일
0

프로그래머스 LV.0

목록 보기
10/10

😎 링크

프로그래머스 - 안전지대

😎 고려할 사항

  • 가장 기본적인 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++) {
          // 배열 out of range 제어
          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문을 사용하자
profile
프론트 어쩌고

0개의 댓글