파비의 매일매일 공부기록

2023.01.25 Today's Challenge 본문

Problem Solving/LeetCode

2023.01.25 Today's Challenge

fabichoi 2023. 1. 25. 23:45

https://leetcode.com/problems/find-closest-node-to-given-two-nodes/

 

Find Closest Node to Given Two Nodes - LeetCode

Find Closest Node to Given Two Nodes - You are given a directed graph of n nodes numbered from 0 to n - 1, where each node has at most one outgoing edge. The graph is represented with a given 0-indexed array edges of size n, indicating that there is a dire

leetcode.com

DFS를 활용해서 푸는 문제

class Solution:
    def closestMeetingNode(self, edges: List[int], node1: int, node2: int) -> int:
        inf = float('inf')
        n = len(edges)

        dist_n1 = [inf for _ in range(n)]
        dist_n2 = [inf for _ in range(n)]

        def dfs(node, di, d):
            if d[node] > di:
                d[node] = di
                if edges[node] != -1:
                    dfs(edges[node], di+1, d)
        
        dfs(node1, 0, dist_n1)
        dfs(node2, 0, dist_n2)

        for i in range(n):
            dist_n1[i] = max(dist_n1[i], dist_n2[i])
        
        ans = dist_n1.index(min(dist_n1))

        return ans if dist_n1[ans] != inf else -1
반응형

'Problem Solving > LeetCode' 카테고리의 다른 글

2023.01.27 Today's Challenge  (0) 2023.01.27
2023.01.26 Today's Challenge  (0) 2023.01.26
2023.01.24 Today's Challenge  (0) 2023.01.24
2023.01.23 Today's Challenge  (0) 2023.01.23
2023.01.22 Today's Challenge  (0) 2023.01.22
Comments