일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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
- 자바
- 정렬
- bfs/dfs
- node.js
- CSS
- greedy
- 코딩테스트 입문
- Baekjoon
- js
- 자바스크립트
- 프로그래머스 해시
- javascript
- pandas
- CLASS
- Java
- programmers
- 프로그래머스 JS
- 프로그래머스
- 코딩테스트
- Next.js
- scss
- Lv2
- Python
- Lv1
- 연습문제
- Typescript
- 백준
- React
- SWEA
- react-router-dom
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 |