일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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
- websocket
- react
- 리액트 훅
- 디자인 패턴
- codesandbox
- 자바 공부
- useState
- 데이터모델링과마이닝
- design pattern
- 코틀린
- 리액트
- react firebase
- NextJS
- 백준
- 프로그래머스 완전탐색
- useEffect
- 프로그래밍 언어론
- 프로그래머스 자바
- react hook
- 자바스크립트
- 코딩테스트 고득점 Kit 완전탐색
- 프로그래머스
- vanillaJS
- React JS
- JavaScript
- 컴퓨터 네트워크
- Java
- 자바
- 장고
- 코딩테스트 고득점 Kit
Archives
- Today
- Total
기록하는 개발자
[프로그래머스][코딩테스트 고득점 Kit][Javascript] 게임 맵 최단거리 본문
728x90
https://school.programmers.co.kr/learn/courses/30/lessons/1844
function solution(maps) {
const dx = [0, 0, 1, -1];
const dy = [1, -1, 0, 0];
const y = maps.length-1;
const x = maps[0].length - 1;
const queue = [[0, 0, 1]];
while (queue.length) {
const now = queue.shift();
if (now[0] == y && now[1] == x) {
return now[2];
}
// 상하좌우 탐색
for (let i = 0; i < 4; i++) {
const ny = now[0] + dy[i];
const nx = now[1] + dx[i];
// 상하좌우의 좌표가 0 이상이고
// maps 내에 있고
// 해당 좌표가 벽이 아닌 경우(벽이면 0)
if (nx >= 0 && ny >= 0
&& nx <= x && ny <= y
&& maps[ny][nx] === 1
) {
// maps 내 이미 지난 길을 0으로 표시
maps[ny][nx] = 0;
// now[2]+1 : 지나온 길의 총 거리
queue.push([ny, nx, now[2]+1]);
}
}
}
return -1;
}
728x90
'Algorithm' 카테고리의 다른 글
[프로그래머스][코딩테스트 고득점 Kit][Javascript] 단속카메라 (0) | 2023.08.08 |
---|---|
[프로그래머스][코딩테스트 고득점 Kit][Javascript] 조이스틱 (0) | 2023.08.08 |
[프로그래머스][코딩테스트 고득점 Kit][Javascript] 전력망을 둘로 나누기 (0) | 2023.08.07 |
[프로그래머스][코딩테스트 고득점 Kit][Javascript] 피로도 (0) | 2023.08.07 |
[백준][JAVA] 1913 : 달팽이 (0) | 2023.01.10 |