Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
Tags
- 최소스패닝트리
- solved.ac플래티넘
- 지도 여러개
- 알고리즘문제풀이
- 타겟넘버
- 5강클로저
- JS
- 두원사이의정수쌍
- 정렬
- 백준 알고리즘
- [pccp 기출문제]
- Lv3
- 코어자바스크립트
- 알고리즘 문제풀이
- DP
- React.StrictMode
- 프로그래머스
- pccp기출문제
- JS스터디
- 스택
- solved.ac골드
- 백준알고리즘
- Lv2
- 이중지도
- 2023카카오블라인드코테
- div2개
- 비트마스크
- c++
- 과제진행하기
- 우박수열정적분
Archives
- Today
- Total
호지
[프로그래머스] 게임 맵 최단거리 문제풀이 JS 본문
가장 기본적인 BFS문제이다.
BFS 탐색을 통해 0,0위치에서 n-1,m-1위치에 도달하는 최소 경로 길이를 구하면 된다.
function solution(maps) {
let x = [],
y = [];
const moves = [
[1, 0],
[0, 1],
[-1, 0],
[0, -1],
];
const n = maps.length,
m = maps[0].length;
x.push(0);
y.push(0);
while (x.length > 0) {
let nx = x.shift();
let ny = y.shift();
for (let i = 0; i < 4; i++) {
let mx = nx + moves[i][0];
let my = ny + moves[i][1];
if (mx >= 0 && mx < n && my >= 0 && my < m && maps[mx][my] === 1) {
if (mx === n - 1 && my === m - 1) {
return maps[nx][ny] + 1;
}
x.push(mx);
y.push(my);
maps[mx][my] = maps[nx][ny] + 1;
}
}
}
return -1;
}
https://school.programmers.co.kr/learn/courses/30/lessons/1844
'알고리즘 > 프로그래머스' 카테고리의 다른 글
[프로그래머스] 타겟 넘버 문제풀이 JS (0) | 2023.07.20 |
---|---|
[프로그래머스] 요격 시스템 문제풀이 JS (0) | 2023.07.20 |
[프로그래머스] 카드 뭉치 문제풀이 JS (0) | 2023.07.20 |
[프로그래머스] 대충 만든 자판 JS (0) | 2023.07.20 |
[프로그래머스] 덧칠하기 문제풀이 JS (0) | 2023.07.20 |
Comments