• 카테고리

    질문 & 답변
  • 세부 분야

    프론트엔드

  • 해결 여부

    미해결

지뢰찾기 클릭한 셀 주변을 검사하는 checkAround 함수 질문있습니다

23.04.24 13:54 작성 조회수 266

0

const checkAround = (row, cell) => {
        let around = [];
        if (tableData[row - 1]) {
          around = around.concat(
            tableData[row - 1][cell - 1],
            tableData[row - 1][cell],
            tableData[row - 1][cell + 1]
          );
        }
        around = around.concat(
          tableData[row][cell - 1],
          tableData[row][cell + 1]
        );
        if (tableData[row + 1]) {
          around = around.concat(
            tableData[row + 1][cell - 1],
            tableData[row + 1][cell],
            tableData[row + 1][cell + 1]
          );
        }

해당 함수에서 8방향 체크를 할 때 먼저 윗줄과 아랫줄이 존재하는지 확인하는데

좌우 체크는 굳이 안해도 되는건가요?

해당 강좌에서는 concat 후 filter로 해당 코드들만 걸러내서 괜찮은건 알겠는데

어느정도 큰 규모의 프로젝트에서 이렇게하면 낭비되는 메모리는 없는지, 일일히 다 체크해줘야 하는지 궁금합니다!

답변 1

답변을 작성해보세요.

0

around = around.concat( tableData[row][cell - 1], tableData[row][cell + 1] );

이게 좌우 체크입니다.

실제로는 더 효율적인 bfs 알고리즘이 있습니다.