https://programmers.co.kr/learn/courses/30/lessons/12978?language=javascript
1번 마을부터 N번 마을까지의 최소 비용 Map 을 작성한다. (재귀 사용)
모든 프로그래머스 문제 관련 코드들은 GitHub 링크 에 있음.
const beadal = (town, coast, map, road, K) => {
if (coast <= K) {
map[town - 1] = coast;
}
const remainLoad = road.filter(r => r[0] !== town && r[1] !== town);
road
.filter(r => r[0] === town || r[1] === town)
.map(r => {
const next = r[1] === town ? r[0] : r[1];
const nextCoast = coast + r[2];
if (nextCoast <= K && nextCoast < map[next - 1]) {
beadal(next, nextCoast, map, remainLoad, K);
}
});
};
function solution(N, road, K) {
var answer = 0;
const map = (new Array(N)).fill(K + 1);
beadal(1, 0, map, [...road], K);
return map.filter(coast => coast <= K).length;
}