📑 문제
https://leetcode.com/problems/clone-graph/
📑 문제 접근 방법
이문제는 graph문제이기 때문에, DFS 알고리즘을 이용하여 해결했습니다.
1. 복제한 노드를 저장하기 위해 HashMap을 생성
2. 현재 노드를 복제 , 이웃 노드를 재귀적으로 탐색하며 복제하기 위해 DFS 알고리즘 사용
📑 CODE
/*
// Definition for a Node.
class Node {
public int val;
public List<Node> neighbors;
public Node() {
val = 0;
neighbors = new ArrayList<Node>();
}
public Node(int _val) {
val = _val;
neighbors = new ArrayList<Node>();
}
public Node(int _val, ArrayList<Node> _neighbors) {
val = _val;
neighbors = _neighbors;
}
}
*/
class Solution {
HashMap<Integer, Node> visited = new HashMap<>();
public Node cloneGraph(Node node) {
if (node == null) return null;
if (visited.containsKey(node.val)) return visited.get(node.val);
Node copyNode = new Node();
copyNode.val = node.val;
visited.put(node.val, copyNode);
for (Node neighbor : node.neighbors) {
copyNode.neighbors.add(cloneGraph(neighbor));
}
return copyNode;
}
}
반응형
'알고리즘' 카테고리의 다른 글
[오늘의 코테연습장] - 백준 5052 번 (0) | 2022.08.03 |
---|---|
[알고리즘] - Graph Algorithms (0) | 2021.05.31 |
[알고리즘] - Greedy 알고리즘 (0) | 2021.05.20 |