|
14 | 14 | dfs,
|
15 | 15 | id,
|
16 | 16 | object reference,
|
| 17 | + Java, |
| 18 | + 자바, |
| 19 | + vertex, |
| 20 | + edge, |
17 | 21 | ]
|
18 | 22 | date: 2024-02-13 22:00:00 +0900
|
19 | 23 | ---
|
|
125 | 129 |
|
126 | 130 | 
|
127 | 131 |
|
128 |
| -해당 에러로 검색해보면 맞는것 같은데 왜 안되냐는 질문들이 꽤 있다. 문제 제출자가 원하는 방식으로 풀지 않아서 그런가보다 생각중이다. |
| 132 | +해당 에러로 검색해보면 맞는것 같은데 왜 안되냐는 질문들이 꽤 있다. 문제 제출자가 원하는 방식으로 풀지 않아서 그런가보다 생각중이다. |
129 | 133 | (아니면 내가 아직 파이썬에 대한 이해가 부족해서 그런걸수도 있을 것 같다.)
|
130 | 134 |
|
131 | 135 | 이후의 다른 케이스들에 대해서도 문제가 있을 수는 있겠지만, 적어도 위에 적은 케이스에 대해서 왜 통과를 못하는지는 확실히 모르겠다.
|
@@ -197,5 +201,45 @@ def cloneGraph(self, node: Optional['Node']) -> Optional['Node']:
|
197 | 201 | 그리고 찾아보면서 class variable 과 object variable에 대해서 알게 되었다.
|
198 | 202 | class variable는 java로 치면 static 이라고 이해하면 될 것 같다.
|
199 | 203 |
|
200 |
| -이전에는 몰라서 썼던거인지라 이 이후로는 클래스 변수를 쓰는건 자제하고 있다. |
| 204 | +이전에는 몰라서 썼던거인지라 이 이후로는 클래스 변수를 쓰는건 자제하고 있다. |
201 | 205 | 파이썬에 조금씩 익숙해져 가는 것 같다.
|
| 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