visited
리스트와 출력 node들을 담은 nodeList
를 생성함nodeList = [Node(i) for i in range(101)]
로 미리 값을 초기화 해줌. (노드가 n개 일 때, 번호는 1~n+1로 생성된다고 조건에서 알려줌)node.val
이 int 값이기 때문에 코드가 조금 난잡함node
와 val
은 미리 만들어 뒀으니, dfs 탐색을 하면서 neighbors
만 잘 연결해주면 됨. def cloneGraph(self, node: 'Node') -> 'Node':
if node:
nodeList = [Node(i) for i in range(101)] #미리 Node 생성
visited = [False for _ in range(101)] # 방문 여부
visited[0] = True # place holder
visited[node.val] = True
stack = deque()
stack.append(node)
while stack:
thisNode = stack.pop()
for nextNode in thisNode.neighbors: #인접 노드 순회
nodeList[thisNode.val].neighbors.append(nodeList[nextNode.val]) # 새 그래프에 연결
if not visited[nextNode.val]:
visited[nextNode.val] = True
stack.append(nextNode) # 방문한적 없는 노드면, stack에 넣기
return nodeList[node.val] # 첫번째 노드 반환
else:
return None
굿!