[프로그래머스] 경주로 건설 - JavaScript
프로그래머스 Level 3 - 경주로 건설
- 문제 분류 : 2020 카카오 인턴십
- 문제 출처 : 프로그래머스 Level 3 - 경주로 건설
📌 생각한 풀이 방법
- BFS를 통해 경로를 탐색한다.
- 상하좌우를 탐색하며 해당 위치가 0이거나, 현재 누적 값인 total보다 클 경우 탐색한다.
📌 풀이
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];
}
Author And Source
이 문제에 관하여([프로그래머스] 경주로 건설 - JavaScript), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@tnehd1998/프로그래머스-경주로-건설-JavaScript저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)