Skip to content

Commit a4bd6e3

Browse files
committed
Refactor: 실버2 트리의 부모 찾기
1 parent 8f00be1 commit a4bd6e3

File tree

1 file changed

+11
-1
lines changed

1 file changed

+11
-1
lines changed

Diff for: 4주차/채수혁/실버2__트리의_부모_찾기.js

+11-1
Original file line numberDiff line numberDiff line change
@@ -14,29 +14,39 @@ const input = process.execArgv.includes("--stack-size=65536")
1414

1515
const inputs = input.trim().split("\n");
1616
let cnt = 0;
17+
// n: 노드의 개수
1718
const n = Number(inputs[0]);
1819
const arr = inputs.slice(1).map((v) => v.split(" ").map((v2) => Number(v2)));
20+
// 양방향 그래프
1921
const map = {};
2022
arr.forEach((v) => {
2123
if (map[v[0]]) map[v[0]].push(v[1]);
2224
else map[v[0]] = [v[1]];
2325
if (map[v[1]]) map[v[1]].push(v[0]);
2426
else map[v[1]] = [v[0]];
2527
});
28+
// 부모 노드를 저장할 배열
2629
const parents = Array.from({ length: n + 1 }, () => 0);
30+
// 방문 여부를 저장할 배열
2731
const visited = Array.from({ length: n + 1 }, () => false);
2832

33+
// 1번 노드부터 탐색 시작
2934
const que = [[1, map[1]]];
3035

3136
while (que.length > 0) {
37+
// cur: nodeArr 의 부모노드 , nodeArr: 부모 노드와 연결된 노드들의 배열
3238
const [cur, nodeArr] = que.shift();
33-
3439
visited[cur] = true;
3540

3641
for (const node of nodeArr) {
42+
// 이미 방문한 노드라면 continue
3743
if (visited[node]) continue;
44+
// 특정 노드번호의 부모노드를 parents 라는 부모 배열에 저장
3845
parents[node] = cur;
46+
// 현재 노드가 부모노드가 되어서 다음 노드를 탐색
3947
que.push([node, map[node]]);
4048
}
4149
}
50+
51+
// 출력
4252
console.log(parents.slice(2).reduce((a, v) => a + v + "\n", ""));

0 commit comments

Comments
 (0)