File tree Expand file tree Collapse file tree 1 file changed +40
-0
lines changed Expand file tree Collapse file tree 1 file changed +40
-0
lines changed Original file line number Diff line number Diff line change 1+ '''
2+ ์๊ฐ ๋ณต์ก๋: O(V + E)
3+ - ๊ทธ๋ํ์ ๋ชจ๋ ๋
ธ๋๋ฅผ ํ ๋ฒ์ฉ ๋ฐฉ๋ฌธํด์ผ ํ๋ฏ๋ก O(V)
4+ - ๊ฐ ๋
ธ๋์ ๋ชจ๋ ๊ฐ์ ์ ํ ๋ฒ์ฉ ํ์ํด์ผ ํ๋ฏ๋ก O(E)
5+ - ๋ฐ๋ผ์ ์ ์ฒด ์๊ฐ ๋ณต์ก๋๋ O(V + E)
6+
7+ ๊ณต๊ฐ ๋ณต์ก๋: O(V + E)
8+ - ํด๋ก ๋
ธ๋๋ฅผ ์ ์ฅํ๋ ๋์
๋๋ฆฌ(clones): O(V)
9+ - BFS ํ์์ ์ํ ํ(queue): O(V)
10+ - ๋ณต์ ๋ ๊ทธ๋ํ์ ๋
ธ๋์ ๊ฐ์ ์ ์ฅ ๊ณต๊ฐ: O(V + E)
11+ '''
12+
13+ from typing import Optional
14+ from collections import deque
15+ # Definition for a Node.
16+ class Node :
17+ def __init__ (self , val = 0 , neighbors = None ):
18+ self .val = val
19+ self .neighbors = neighbors if neighbors is not None else []
20+
21+ class Solution :
22+ def cloneGraph (self , node : Optional ['Node' ]) -> Optional ['Node' ]:
23+ if not node :
24+ return None
25+
26+ clones = { node .val : Node (node .val ) }
27+ queue = deque ([node ])
28+
29+ while queue :
30+ current_node = queue .popleft ()
31+
32+ for neighbor in current_node .neighbors :
33+ # add neighbors
34+ if neighbor .val not in clones .keys ():
35+ queue .append (neighbor )
36+ clones [neighbor .val ] = Node (neighbor .val )
37+
38+ clones [current_node .val ].neighbors .append (clones [neighbor .val ])
39+
40+ return clones [node .val ]
You canโt perform that action at this time.
0 commit comments