728x90
문제 설명
https://school.programmers.co.kr/learn/courses/30/lessons/169199
문제 풀이 방법
이 문제는 이전에 풀었던 카카오 문제와 비슷하다.
이 문제에서 조금 어려웠던 부분은 미끄러져 이동하는 동작 구현이다.
단순하게 생각하면 됬었다.
while문을 이용해 벽이 나올때 까지 이동하면 되는 것이였다.
코드
const solution = (board) => {
board = board.map((e) => e.split(''));
let answer = 0;
let n = board.length;
let m = board[0].length;
let que = [];
const xd = [-1, 1, 0, 0];
const yd = [0, 0, -1, 1];
// 해당 목표지점 까지 도달 가능한 상황인지 파악
for(let i=0; i<board.length; i++){
for(let j=0; j<board[0].length; j++){
if(board[i][j] === "R") que.push([i, j]);
}
}
board[que[0][0]][que[0][1]] = '0';
while(que.length){
const size = que.length;
for(let i=0; i<size; i++){
const [x, y] = que.shift();
for(let j=0; j<4; j++){
let nx = x + xd[j];
let ny = y + yd[j];
while(nx >= 0 && nx < n && ny >= 0 && ny < m && board[nx][ny] !== 'D') {
nx += xd[j];
ny += yd[j];
}
nx -= xd[j];
ny -= yd[j];
if(board[nx][ny] === 'G') return answer + 1;
if(board[nx][ny] !== '0'){
board[nx][ny] = '0';
que.push([nx, ny]);
}
}
}
answer++;
}
return -1;
}
728x90
'코딩 테스트 > 프로그래머스 코딩 테스트 연습' 카테고리의 다른 글
[JS] 2Level / 연습문제 / 광물 캐기 (0) | 2024.01.17 |
---|---|
[JS] 2Level / 연습문제 / 디펜스 게임 (0) | 2023.12.28 |
2Level / Summer/Winter Coding(2019) / 멀쩡한 사각형 (0) | 2023.12.04 |
[JS] 2Level / 연습문제 / 점 찍기 (0) | 2023.11.24 |
[JS] 2Level / 연습문제 / 미로 탈출 (1) | 2023.11.21 |