일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- 백준
- 코딩테스트 입문
- greedy
- programmers
- 네트워크
- CSS
- 그리디
- javascript
- 프로그래머스
- CLASS
- 정렬
- Lv2
- Python
- 자바
- React
- 이것이 코딩테스트다 with 파이썬
- Baekjoon
- 자바스크립트
- Lv1
- bfs/dfs
- Next.js
- SWEA
- js
- Java
- 알고리즘
- Typescript
- 연습문제
- 프로그래머스 JS
- 코딩테스트
- node.js
Archives
- Today
- Total
개발야옹
[Programmers] 깊이/너비 우선 탐색(DFS/BFS) lv2 - 게임 맵 최단거리 본문
Algorithm\CodingTest/Programmers
[Programmers] 깊이/너비 우선 탐색(DFS/BFS) lv2 - 게임 맵 최단거리
kitez 2023. 3. 17. 09:27https://school.programmers.co.kr/learn/courses/30/lessons/1844
function solution(maps) {
var answer = 0;
// 상 하 좌 우
const vector = [[-1, 0], [1, 0], [0, -1], [0, 1]];
const bfs = () => {
const queue = [[0,0]];
while(queue.length) {
const cur = queue.shift();
if(maps[cur[0]][cur[1]] !== 0) {
const vectors = [];
vector.forEach((v) => {
const x = Number(cur[0])+ Number(v[0]);
const y = Number(cur[1])+ Number(v[1]);
if(x >= 0 && y >= 0 && x < maps.length && y < maps[0].length && maps[x][y] === 1) {
vectors.push([x,y]);
}
});
const prev = maps[cur[0]][cur[1]];
vectors.forEach((v) => {
maps[v[0]][v[1]] = prev+1;
});
queue.push(...vectors);
}
}
}
bfs();
return maps[maps.length-1][maps[0].length-1] === 1 ? -1 : maps[maps.length-1][maps[0].length-1];
}
728x90
'Algorithm\CodingTest > Programmers' 카테고리의 다른 글
[Programmers] 연습문제 - 추억 점수 (0) | 2023.04.22 |
---|---|
[Programmers] 코딩테스트 입문 - 안전지대 (0) | 2023.03.17 |
[Programmers] 그래프 level 3 - 가장 먼 노드 ( 다시 풀어보기 ) (0) | 2023.03.12 |
[Programmers] 연습문제 - 피보나치 수 (0) | 2023.03.08 |
[Programmers] 연습문제 - 숫자의 표현 (0) | 2023.03.08 |