[プログラマー]コース建設-JavaScript
プログラマー第3級-コース建設
📌 と考える
📌 に答える
function solution(board) {
let boardSize = board.length;
const checkValid = (mx, my) =>
mx >= 0 && my >= 0 && mx < boardSize && my < boardSize;
let pointX = [-1, 0, 1, 0];
let pointY = [0, 1, 0, -1];
function bfs(queue) {
while (queue.length) {
let [x, y, direction, total] = queue.shift();
if (board[x][y] === 0 || board[x][y] >= total) {
// 해당 위치가 0이거나, 현재 누적 값인 total보다 클 경우 탐색
board[x][y] = total;
pointX.forEach((_, index) => {
// 상하좌우를 탐색
if (Math.abs(index - direction) !== 2) {
const value = total + (direction === index ? 100 : 600);
if (checkValid(x + pointX[index], y + pointY[index])) {
queue.push([x + pointX[index], y + pointY[index], index, value]);
}
}
});
}
}
}
bfs([
[0, 1, 1, 100],
[1, 0, 2, 100],
]); // BFS를 통해 경로를 탐색
return board[boardSize - 1][boardSize - 1];
}
Reference
この問題について([プログラマー]コース建設-JavaScript), 我々は、より多くの情報をここで見つけました https://velog.io/@tnehd1998/프로그래머스-경주로-건설-JavaScriptテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol