Skip to content

Commit d45ee04

Browse files
authored
Merge pull request #1101 from sungjinwi/main
[suwi] week 14
2 parents 673403b + b5a7286 commit d45ee04

File tree

3 files changed

+76
-0
lines changed

3 files changed

+76
-0
lines changed
Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
"""
2+
풀이 :
3+
level을 인자로 함께 넘겨서 level에 해당하는 인덱스에 append
4+
5+
node 개수 N
6+
7+
TC : O(N)
8+
모든 node에 대해 dfs호출
9+
10+
SC : O(N)
11+
dfs 함수 호출 스택이 노드 개수 N만큼
12+
"""
13+
14+
# Definition for a binary tree node.
15+
# class TreeNode:
16+
# def __init__(self, val=0, left=None, right=None):
17+
# self.val = val
18+
# self.left = left
19+
# self.right = right
20+
class Solution:
21+
def levelOrder(self, root: Optional[TreeNode]) -> List[List[int]]:
22+
ans = []
23+
24+
def dfs(node: Optional[TreeNode], level: int) -> None:
25+
if not node :
26+
return
27+
if len(ans) < level + 1 :
28+
ans.append([node.val])
29+
else:
30+
ans[level].append(node.val)
31+
dfs(node.left, level + 1)
32+
dfs(node.right, level + 1)
33+
34+
dfs(root, 0)
35+
36+
return ans

counting-bits/sungjinwi.py

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
"""
2+
풀이 :
3+
가장 낮은 자리의 비트를 제외한 dp의 성분 + 가장 낮은 자리 비트를 통해 dp 구현
4+
5+
n의 크기 : N
6+
7+
TC : O(N)
8+
9+
SC : O(N)
10+
"""
11+
class Solution:
12+
def countBits(self, n: int) -> List[int]:
13+
dp = [0] * (n + 1)
14+
15+
for num in range(1, n + 1):
16+
dp[num] = dp[num >> 1] + (num & 1)
17+
18+
return dp

house-robber-ii/sungjinwi.py

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
"""
2+
풀이 :
3+
start를 포함하는 경우와 end를 포함하는 경우를 나눠서 dp 진행
4+
5+
nums의 갯수 N
6+
7+
TC : O(N)
8+
9+
SC : O(1)
10+
"""
11+
12+
class Solution:
13+
def rob(self, nums: List[int]) -> int:
14+
if len(nums) == 1:
15+
return nums[0]
16+
prv1, cur1 = 0, 0
17+
prv2, cur2 = 0, 0
18+
for i in range(1, len(nums)):
19+
prv1, cur1 = cur1, max(cur1, prv1 + nums[i])
20+
for i in range(len(nums) - 1):
21+
prv2, cur2 = cur2, max(cur2, prv2 + nums[i])
22+
return max(cur1, cur2)

0 commit comments

Comments
 (0)