[프로그래머스] 리코쳇 로봇 Lv2
2025. 2. 18. 17:03ㆍ코딩 테스트 준비
728x90
반응형
https://school.programmers.co.kr/learn/courses/30/lessons/169199?language=javascript
프로그래머스
SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프
programmers.co.kr
function solution(board) {
let answer = -1;
const map = board.map(item => item.split(""));
const n = map.length;
const m = map[0].length;
const visited = new Array(n).fill().map(_ => new Array(m).fill(0))
const dx = [0, 1, 0, -1];
const dy = [-1, 0, 1, 0];
// 시작 지점 찾기
let sx, sy;
for (let x=0; x<n; x++) {
for (let y=0; y<m; y++) {
if (map[x][y] === "R") {
sx = x;
sy = y;
}
}
}
// BFS
const queue = [[sx, sy, 0]];
visited[sx][sy] = 1;
while (queue.length) {
const [x, y, count] = queue.shift();
if (map[x][y] === "G") {
answer = count;
break;
}
for (let i=0; i<4; i++) {
let nx = x + dx[i];
let ny = y + dy[i];
// 미끄러지기 (한방향으로)
while(0<=nx && nx<n && 0<=ny && ny<m && map[nx][ny] !== "D") {
nx += dx[i]
ny += dy[i]
}
nx -= dx[i];
ny -= dy[i];
if (visited[nx][ny] === 0) {
queue.push([nx, ny, count+1]);
visited[nx][ny] = 1
}
}
}
return answer;
}
728x90
반응형
'코딩 테스트 준비' 카테고리의 다른 글
[프로그래머스] 무인도 여행 Lv2 (0) | 2025.02.17 |
---|---|
[프로그래머스] 줄 서는 방법 Lv2 (0) | 2025.02.15 |
[프로그래머스] 미로 탈출 Lv2 (0) | 2025.02.14 |
[프로그래머스] 숫자 카드 나누기 Lv2 (0) | 2025.02.13 |
[프로그래머스] 시소 짝꿍 Lv1 (0) | 2025.02.12 |