From 9b60a01c045d6a6df592d9f37a7437de9c2ba299 Mon Sep 17 00:00:00 2001 From: choiminji Date: Sat, 5 Sep 2026 18:13:05 +0900 Subject: [PATCH] 0905 --- .../851.py" | 30 +++++++++++++++++++ 1 file changed, 30 insertions(+) create mode 100644 "leetcode3/\354\265\234\353\257\274\354\247\200/851.py" diff --git "a/leetcode3/\354\265\234\353\257\274\354\247\200/851.py" "b/leetcode3/\354\265\234\353\257\274\354\247\200/851.py" new file mode 100644 index 00000000..e1149ad9 --- /dev/null +++ "b/leetcode3/\354\265\234\353\257\274\354\247\200/851.py" @@ -0,0 +1,30 @@ +class Solution: + def loudAndRich(self, richer: List[List[int]], quiet: List[int]) -> List[int]: + n = len(quiet) + adj = [[] for _ in range(n)] + + # u -> v: u가 v보다 돈이 많음 + for u, v in richer: + adj[v].append(u) + + res = [-1] * n + + def dfs(node): + if res[node] != -1: + return res[node] + + # 자기 자신이 일단 기본값 + min_quiet_person = node + + for parent in adj[node]: + candidate = dfs(parent) + if quiet[candidate] < quiet[min_quiet_person]: + min_quiet_person = candidate + + res[node] = min_quiet_person + return res[node] + + for i in range(n): + dfs(i) + + return res \ No newline at end of file