diff --git a/binary-tree-level-order-traversal/JustHm.swift b/binary-tree-level-order-traversal/JustHm.swift new file mode 100644 index 000000000..27e99ffdd --- /dev/null +++ b/binary-tree-level-order-traversal/JustHm.swift @@ -0,0 +1,17 @@ +// 재귀 함수로 해결 +// 각 노드의 레벨을 기억하고있다가 정답변수에 레벨별로 노드값을 넣어줌 +class Solution { + func levelOrder(_ root: TreeNode?) -> [[Int]] { + var answer = [[Int]]() + searchNodes(0, root, &answer) + return answer + } + + func searchNodes(_ level: Int, _ node: TreeNode?, _ answer: inout [[Int]]) { + guard let node else { return } + if level >= answer.count { answer.append([]) } + answer[level].append(node.val) + searchNodes(level + 1, node.left, &answer) + searchNodes(level + 1, node.right, &answer) + } +} diff --git a/counting-bits/JustHm.swift b/counting-bits/JustHm.swift new file mode 100644 index 000000000..c8aa39f6c --- /dev/null +++ b/counting-bits/JustHm.swift @@ -0,0 +1,14 @@ +// time: O(n) +// approach - 2자리 3자리 ... 로 2진법 변환시 맨 앞 1은 고정이다. +// 그 이후 나머지는 0~N자리일때 총 1의 갯수 를 더해줬다. +class Solution { + func countBits(_ n: Int) -> [Int] { + var answer: [Int] = [0, 1] + + while answer.count < n + 1 { + answer += answer.map{$0 + 1} + } + + return [Int](answer.prefix(n + 1)) + } +}