Skip to content

Commit bc63df5

Browse files
committed
Refactor: 골드4 사회망 서비스
1 parent a4bd6e3 commit bc63df5

File tree

1 file changed

+8
-0
lines changed

1 file changed

+8
-0
lines changed

Diff for: 4주차/채수혁/골드4__사회망_서비스(SNS).js

+8
Original file line numberDiff line numberDiff line change
@@ -18,11 +18,14 @@ const inputs = input
1818
.slice(1)
1919
.map((v) => v.split(" ").map((v2) => Number(v2)));
2020

21+
// n: 노드의 개수
2122
const n = Number(input.trim().split("\n")[0]);
23+
// dp: dp[i][0] = i번 노드가 얼리어답터가 아닐 때, dp[i][1] = i번 노드가 얼리어답터일 때
2224
const dp = Array.from({ length: n + 1 }, () =>
2325
Array.from({ length: 2 }, () => 0)
2426
);
2527

28+
// 양방향 그래프
2629
const map = {};
2730
const visited = Array.from({ length: n + 1 }, () => false);
2831
inputs.forEach((v) => {
@@ -37,13 +40,18 @@ const dfs = (cur) => {
3740
dp[cur][0] = 0;
3841
dp[cur][1] = 1;
3942

43+
// 현재 노드의 자식 노드들을 탐색
4044
for (const node of map[cur]) {
4145
if (visited[node]) continue;
4246
dfs(node);
47+
// 현재 노드가 얼리어답터가 아닐 때, 자식 노드는 얼리어답터여야 한다.
4348
dp[cur][0] += dp[node][1];
49+
// 현재 노드가 얼리어답터일 때, 자식 노드는 얼리어답터일 수도 있고 아닐 수도 있다.
50+
// 따라서 최소를 구하므로 자식 노드가 얼리어답터일 때와 아닐 때 중 작은 값을 더해준다.
4451
dp[cur][1] += Math.min(dp[node][0], dp[node][1]);
4552
}
4653
};
4754

4855
dfs(1);
56+
// 최상위 노드인 1번 노드가 얼리어답터일 때와 아닐 때 중 작은 값을 출력
4957
console.log(Math.min(dp[1][0], dp[1][1]));

0 commit comments

Comments
 (0)