Skip to content

Commit 12f3007

Browse files
update post
1 parent 9eee1b9 commit 12f3007

File tree

1 file changed

+46
-2
lines changed

1 file changed

+46
-2
lines changed

_posts/2024-02-13-leetcode-133.md

Lines changed: 46 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,10 @@ tags:
1414
dfs,
1515
id,
1616
object reference,
17+
Java,
18+
자바,
19+
vertex,
20+
edge,
1721
]
1822
date: 2024-02-13 22:00:00 +0900
1923
---
@@ -125,7 +129,7 @@ True
125129

126130
![graph](/assets/images/2024-02-13-leetcode-133/graph.png)
127131

128-
해당 에러로 검색해보면 맞는것 같은데 왜 안되냐는 질문들이 꽤 있다. 문제 제출자가 원하는 방식으로 풀지 않아서 그런가보다 생각중이다.
132+
해당 에러로 검색해보면 맞는것 같은데 왜 안되냐는 질문들이 꽤 있다. 문제 제출자가 원하는 방식으로 풀지 않아서 그런가보다 생각중이다.
129133
(아니면 내가 아직 파이썬에 대한 이해가 부족해서 그런걸수도 있을 것 같다.)
130134

131135
이후의 다른 케이스들에 대해서도 문제가 있을 수는 있겠지만, 적어도 위에 적은 케이스에 대해서 왜 통과를 못하는지는 확실히 모르겠다.
@@ -197,5 +201,45 @@ def cloneGraph(self, node: Optional['Node']) -> Optional['Node']:
197201
그리고 찾아보면서 class variable 과 object variable에 대해서 알게 되었다.
198202
class variable는 java로 치면 static 이라고 이해하면 될 것 같다.
199203

200-
이전에는 몰라서 썼던거인지라 이 이후로는 클래스 변수를 쓰는건 자제하고 있다.
204+
이전에는 몰라서 썼던거인지라 이 이후로는 클래스 변수를 쓰는건 자제하고 있다.
201205
파이썬에 조금씩 익숙해져 가는 것 같다.
206+
207+
## Java 로 다시 풀기
208+
209+
```java
210+
class Solution {
211+
public Node cloneGraph(Node node) {
212+
return cloneGraph(new HashMap<>(), node);
213+
}
214+
215+
private Node cloneGraph(Map<Integer, Node> map, Node node) {
216+
if(node == null) {
217+
return null;
218+
}
219+
220+
if (map.containsKey(node.val)) {
221+
return map.get(node.val);
222+
}
223+
224+
Node copy = new Node(node.val);
225+
map.put(node.val, copy);
226+
227+
for (int i = 0; i < node.neighbors.size(); i++) {
228+
Node neighborNode = node.neighbors.get(i);
229+
copy.neighbors.add(map.getOrDefault(neighborNode.val, cloneGraph(map, node.neighbors.get(i))));
230+
}
231+
232+
return copy;
233+
}
234+
}
235+
```
236+
237+
### 그래프 용어 정리
238+
239+
- vertex : 정점 (= node)
240+
- edge : 간선
241+
242+
### TC, SC
243+
244+
node(vertex)의 수를 `V`, edge의 수를 `E` 라고 하였을 때 각 노드 마다 edge의 수만큼 반복을 해야한다.
245+
시간 복잡도는 `O(V + E)` 이다. 공간 복잡도는 `O(V)`이다.

0 commit comments

Comments
 (0)