방향그래프가 주어지면 1번 정점에서 N번 정점으로 가는 모든 경로의 가지 수를 출력하는 프
로그램을 작성하세요. 아래 그래프에서 1번 정점에서 5번 정점으로 가는 가지 수는
1 2 3 4 5
1 2 5
1 3 4 2 5
1 3 4 5
1 4 2 5
1 4 5
총 6가지 입니다.
nodeCnt | linkInfo | Output |
---|---|---|
5 | [[1, 2],[1, 3],[1, 4],[2, 1],[2, 3],[2, 5],[3, 4],[4, 2],[4, 5]] | 6 |
i > L
로 처리해 버린 게 실패 요인인 것 같다. (답만 맞았다.)[ 2, 3, 4, 5 ] [ 5, 4, 5 ] [ 3, 3, 4, 5 ] [ 5, 4, 5 ] [ 4, 3, 4, 5 ] [ 5, 4, 5 ]
와 같은 잘못된 경로들을 보여주고 있었다.const solution = (nodeCnt, linkInfo) => {
let answer = 0;
const matrix = Array.from(Array(nodeCnt + 1), () => Array(nodeCnt + 1).fill(0));
const DFS = (L, currNode) => {
if (L === nodeCnt && currNode === nodeCnt) {
answer++;
} else {
for (let i = 1; i <= matrix[L].length; i++) {
if (matrix[L][i] && i > L) DFS(L + 1, i);
}
}
};
for (let i = 0; i < linkInfo.length; i++) {
matrix[linkInfo[i][0]][linkInfo[i][1]] = 1;
}
DFS(1, 1);
return answer;
};