강의

멘토링

로드맵

인프런 커뮤니티 질문&답변

sarah.mun16님의 프로필 이미지
sarah.mun16

작성한 질문수

자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)

4. 미로탐색

미로 탐색 코드 리뷰 부탁드립니다!

작성

·

338

0

반복문을 안 쓰고 짜 봤는데 답은 그대로 나오지만 이렇게 짜도 되는 건지 궁금합니다.

1로 바꿔줬다가 0으로 바꿔주는 시점을 이렇게 해도 괜찮을까요??

 

풀이에서는 DFS 돌아올 때마다 해주시는 것 같아서 질문 드립니다!

 


const solution = (miro) => {
  let ans = 0;
  const DFS = (N, M) => {
    if (N < 0 || M < 0 || N > 6 || M > 6) return;
    if (M === 6 && N === 6) {
      ans++;
    } else {
      if (miro[N][M] === 0) {
        miro[N][M] = 1;
        DFS(N - 1, M);
        DFS(N, M - 1);
        DFS(N + 1, M);
        DFS(N, M + 1);
        miro[N][M] = 0;
      }
    }
  };
  DFS(0, 0);
  return ans;
};

console.log(
  solution([
    [0, 0, 0, 0, 0, 0, 0],
    [0, 1, 1, 1, 1, 1, 0],
    [0, 0, 0, 1, 0, 0, 0],
    [1, 1, 0, 1, 0, 1, 1],
    [1, 1, 0, 0, 0, 0, 1],
    [1, 1, 0, 1, 1, 0, 0],
    [1, 0, 0, 0, 0, 0, 0],
  ])
);

퀴즈

59%나 틀려요. 한번 도전해보세요!

노드 개수가 많을 때 인접 행렬 대신 인접 리스트를 사용하는 주된 이유는 무엇일까요?

가중치 표현이 더 쉽기 때문에

메모리 사용을 효율화할 수 있기 때문에

깊이 우선 탐색(DFS) 속도가 빨라지기 때문에

방향 그래프를 표현할 수 없기 때문에

답변 1

0

김태원님의 프로필 이미지
김태원
지식공유자

안녕하세요^^

네. 위에 처럼 해도 되지만 영상처럼 하는 것을 추천합니다. 네 방향이 아니라 대각선까지 8방향을 탐색할 수도 있습니다. 그럴때는 반복문으로 하는게 코드가 간결해 보입니다.

sarah.mun16님의 프로필 이미지
sarah.mun16

작성한 질문수

질문하기