반응형
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 |
Tags
- type challenge
- 자바스크립트
- 백준
- 레벨 1
- 가천대
- 타입 챌린지
- BFS
- socket
- dfs
- javascript
- 타입스크립트
- Node.js
- Nestjs
- typescript
- HTTP
- 프로그래머스
- 크롤링
- Crawling
- 수학
- HTTP 완벽 가이드
- Algorithm
- 문자열
- 알고리즘
- TCP
- 소켓
- 쉬운 문제
- 그래프
- ip
- dp
- 프로그래머스 레벨 2
Archives
- Today
- Total
kakasoo
[node.js] 게임 맵 최단 거리 ( 프로그래머스 레벨2 ) 본문
반응형
// 프로그래머스 레벨2 게임 맵 최단 거리를 풀었습니다.
const solution = (maps) => {
if (!maps[0][0]) {
return -1;
}
const visited = new Array(maps.length);
for (let i = 0; i < visited.length; i++) {
visited[i] = new Array(maps[0].length).fill(0);
}
const xMove = [0, 0, -1, 1];
const yMove = [1, -1, 0, 0];
const bfs = (startY, startX) => {
const queue = [{ y: startY, x: startX }];
visited[startY][startX] = 1;
while (queue.length) {
const { y, x } = queue.shift();
for (let i = 0; i < 4; i++) {
const nextY = y + yMove[i];
const nextX = x + xMove[i];
if (
0 <= nextY &&
nextY < maps.length &&
0 <= nextX &&
nextX < maps[0].length
) {
if (maps[nextY][nextX] && !visited[nextY][nextX]) {
visited[nextY][nextX] = visited[y][x] + 1;
queue.push({ y: nextY, x: nextX });
}
}
}
}
};
bfs(0, 0);
const answer = visited[maps.length - 1][maps[0].length - 1];
return answer ? answer : -1;
};
반응형
'프로그래밍 > 알고리즘 풀이' 카테고리의 다른 글
[node.js] 배달 ( 프로그래머스 레벨2 ) (0) | 2021.06.30 |
---|---|
[node.js] 예상 대진표 ( 프로그래머스 레벨2 ) (0) | 2021.06.30 |
[node.js] 수식 최대화 ( 프로그래머스 레벨2 ) (0) | 2021.06.30 |
[node.js] 신규 아이디 추천 ( 프로그래머스 레벨1 ) (0) | 2021.06.30 |
[node.js] 로또의 최고 순위와 최저 순위 ( 프로그래머스 레벨1 ) (0) | 2021.06.30 |