반응형
문제
https://leetcode.com/problems/clone-graph/
———————————————————————————
잠깐만
leetCode에서 그래프 문제는 처음이에요.
그래서 그런지, 그래프 개념은 있지만,
leetCode의 그래프 문제에 대한 input과 output에 대한 이해가 어려웠어요.
문제나 input, output을 이해하셨다면, 문제 풀이에 문제 없어요.
———————————————————————————
코드
/**
* Definition for a Node.
* public class Node {
* public var val: Int
* public var neighbors: [Node?]
* public init(_ val: Int) {
* self.val = val
* self.neighbors = []
* }
* }
*/
class Solution {
var isVisited: [Int: Node] = [:]
func cloneGraph(_ node: Node?) -> Node? {
guard let node = node else {
return nil
}
let copiedNode = Node(node.val)
isVisited[copiedNode.val] = copiedNode
node.neighbors.forEach {
if let node = $0, let visitedNode = isVisited[node.val] {
copiedNode.neighbors.append(visitedNode)
} else {
let copiedNeighborNode = cloneGraph($0)
copiedNode.neighbors.append(copiedNeighborNode)
}
}
return copiedNode
}
}
———————————————————————————
설명
재귀함수를 통해서, 모든 노드를 탐색하고, 리턴하고 있습니다.
visit 체크를 해야, 무한 루프에 빠지지 않고 정상종료할 수 있습니다.
———————————————————————————
회고
그래프 문제 시작인데, 워밍업으로 좋아보이네요.
반응형
'코딩 테스트 > LeetCode(swift)' 카테고리의 다른 글
[LeetCode] 207. Course Schedule (0) | 2022.02.21 |
---|---|
[LeetCode] 55. Jump Game (0) | 2022.02.20 |
[LeetCode] 62. Unique Paths (0) | 2022.02.19 |
[LeetCode] 91. Decode Ways (0) | 2022.02.19 |
[LeetCode] 213. House Robber II (0) | 2022.02.19 |