From 9a73a9dcfd06f91ad61bb548a7a8b6b4262cc233 Mon Sep 17 00:00:00 2001 From: songyc macbook Date: Mon, 16 Mar 2026 19:58:54 +0900 Subject: [PATCH] baekjoon 20260316 --- code_study/Baekjoon/ts/20303.ts | 63 +++++++++++++++++++++++++++++++++ 1 file changed, 63 insertions(+) create mode 100644 code_study/Baekjoon/ts/20303.ts diff --git a/code_study/Baekjoon/ts/20303.ts b/code_study/Baekjoon/ts/20303.ts new file mode 100644 index 0000000..bf19bd2 --- /dev/null +++ b/code_study/Baekjoon/ts/20303.ts @@ -0,0 +1,63 @@ +export {}; +const input = require("fs").readFileSync(0).toString().trim().split("\n"); + +const [N, M, K]: number[] = input[0].split(" ").map(Number); +let candy: number[] = [0].concat(input[1].split(" ").map(Number)); + +let rank: number[] = new Array(N+1).fill(0); +let parent: number[] = Array.from({length : N+1}, (_, i) => i); + +const find = (x: number): number => { + if(x !== parent[x]) return parent[x] = find(parent[x]); + return parent[x]; +}; + +const union = (x: number, y: number) => { + x = find(x); + y = find(y); + + if(x === y) return; + + if(rank[x] < rank[y]) { + const temp = x; + x = y; + y = temp; + } + + parent[y] = x; + + if(rank[x] === rank[y]) rank[x]++; +} + +for(let i=0; i=w; k--) { + dp[k] = Math.max(dp[k], dp[k-w] + v); + } +} + +let res: number = 0; +for(let k=1; k