Daily LeetCode Challenge - 1020. Number of Enclaves

Min Young Kim·2023년 4월 8일
0

algorithm

목록 보기
115/198

Problem From.

https://leetcode.com/problems/clone-graph/

오늘 문제는 주어진 그래프와 똑같은 그래프를 만들어서 반환하는 문제였다.

이 문제는 DFS 로 풀 수 있었는데, 먼저 모든 노드를 가진 map 을 만들고, 각 노드에 연결되는 노드를 value 에 넣어둔다.
그 다음 map 을 순환하면서 새로운 그래프를 만들어서 반환해주었다.

/**
 * Definition for a Node.
 * class Node(var `val`: Int) {
 *     var neighbors: ArrayList<Node?> = ArrayList<Node?>()
 * }
 */

class Solution {
    fun cloneGraph(node: Node?): Node? {
        if (node == null) return null
        
        val map = mutableMapOf<Node, Node>() 
           
        fun clone(node: Node?): Node? {
            if (node == null) return null
            if (node in map) return map[node]

            val copy = Node(node.`val`)
            map[node] = copy
            
            node.neighbors.forEach {
               copy.neighbors.add(clone(it))
            }
            return copy
        }
        
        return clone(node)
    }
}
profile
길을 찾는 개발자

0개의 댓글