Algorithm/Inflearn

[알고리즘/인프런] 미로탐색

2023. 5. 21. 14:28
목차
  1. 문제
  2. 풀이
반응형

문제


7*7 격자판 미로를 탈출하는 경로의 가지수를 출력하는 프로그램을 작성하세요. 출발점은 격
자의 (1, 1) 좌표이고, 탈출 도착점은 (7, 7)좌표이다. 격자판의 1은 벽이고, 0은 통로이다. 격자판의 움직임은 상하좌우로만 움직인다. 미로가 다음과 같다면 위의 지도에서 출발점에서 도착점까지 갈 수 있는 방법의 수는 8가지이다.

 

 

 

풀이


function solution(arr) {
  const n = arr.length;
  const dx = [-1, 0, 1, 0];
  const dy = [0, 1, 0, -1];
  let answer = 0;

  function DFS(x, y) {
    if (x === n - 1 && y === n - 1) {
      answer += 1;
    } else {
      for (let i = 0; i < 4; i++) {
        const nx = x + dx[i]; // 다음 x 좌표 
        const ny = y + dy[i]; // 다음 y 좌표 

        if (nx >= 0 && nx < n && ny >= 0 && ny < n && arr[nx][ny] === 0) {
          arr[nx][ny] = 1;
          DFS(nx, ny);
          arr[nx][ny] = 0;
        }
      }
    }
  }
  
  arr[0][0] = 1; // 시작점 방문 표시 
  DFS(0, 0);
  return answer;
}

입력으로 받은 배열에서 네 방향을 확인했을 때 가능한 지점인 경우 이동하면서 도착점까지 가는 방법을 찾는다. 가능한 지점은 arr 배열에서 index가 존재하고 아직 방문하지 않은 지점(arr[nx][ny] === 0)이다.

시작점을 방문 표시 해주지 않아서 자꾸 더 많은 경우의 수를 출력했다. 꼭 시작점 방문 표시를 해줘야겠다. 또 dx는 행에서, dy는 열에서의 이동을 의미한다는 것에 유의해야겠다.

반응형
저작자표시 (새창열림)

'Algorithm > Inflearn' 카테고리의 다른 글

[알고리즘/인프런] 섬나라 아일랜드  (0) 2023.05.21
[알고리즘/인프런] 송아지 찾기  (0) 2023.05.21
[알고리즘/인프런] 경로탐색(인접 리스트)  (0) 2023.05.21
[알고리즘/인프런] 경로 탐색(인접행렬)  (0) 2023.05.21
[알고리즘/인프런] 수들의 조합  (1) 2023.05.21
  1. 문제
  2. 풀이
'Algorithm/Inflearn' 카테고리의 다른 글
  • [알고리즘/인프런] 섬나라 아일랜드
  • [알고리즘/인프런] 송아지 찾기
  • [알고리즘/인프런] 경로탐색(인접 리스트)
  • [알고리즘/인프런] 경로 탐색(인접행렬)
개발자 김비숑
개발자 김비숑
프론트엔드 개발자를 준비하고 있는 김비숑입니다.
반응형
개발자 김비숑
김비숑과 프론트엔드
개발자 김비숑
전체
오늘
어제
  • 분류 전체보기 (118)
    • FrontEnd (24)
      • HTML&CSS (1)
      • JavaScript (3)
      • TypeScript (8)
      • React (8)
      • Test (4)
    • CS (1)
    • Algorithm (83)
      • BOJ (42)
      • Inflearn (26)
      • Programmers (15)
    • Git (0)
    • Projects (4)
    • Translation (1)
    • Others (0)
      • Reviews (4)
      • About Me (0)

블로그 메뉴

  • 홈
  • 태그
  • 방명록
  • 글쓰기

인기 글

최근 글

hELLO · Designed By 정상우.
개발자 김비숑
[알고리즘/인프런] 미로탐색
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.