Skip to content

Commit d610260

Browse files
authored
Merge pull request #585 from mangodm-web/main
[mangodm-web] Week13 Solutions
2 parents 675caa0 + bb93040 commit d610260

File tree

2 files changed

+49
-0
lines changed

2 files changed

+49
-0
lines changed

β€Žhouse-robber/mangodm-web.py

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
from typing import List
2+
3+
4+
class Solution:
5+
def rob(self, nums: List[int]) -> int:
6+
"""
7+
- Idea: i번째 μ§‘κΉŒμ§€μ˜ μ΅œλŒ€ κΈˆμ•‘μ€ 두 κ°€μ§€ 쀑 더 큰 κ°’μœΌλ‘œ κ²°μ •λœλ‹€.
8+
1. (i-2번째 μ§‘κΉŒμ§€μ˜ μ΅œλŒ€ κΈˆμ•‘) + i번째 μ§‘μ˜ κΈˆμ•‘
9+
2. (i-1번째 μ§‘κΉŒμ§€μ˜ μ΅œλŒ€ κΈˆμ•‘)
10+
이λ₯Ό μ΄μš©ν•΄ 동적 ν”„λ‘œκ·Έλž˜λ°μœΌλ‘œ 각 μ§‘κΉŒμ§€μ˜ μ΅œλŒ€ κΈˆμ•‘μ„ κ³„μ‚°ν•œλ‹€.
11+
쀑간 κ²°κ³Όλ₯Ό μ €μž₯ν•  배열을 λ§Œλ“€κ³  순차적으둜 값을 μ±„μš°λ©΄, 맨 λ§ˆμ§€λ§‰ 값이 전체 μ΅œλŒ€ κΈˆμ•‘μ΄ λœλ‹€.
12+
- Time Complexity: O(n). n은 μ§‘μ˜ 개수.
13+
λͺ¨λ“  집을 ν•œλ²ˆμ”© μˆœνšŒν•΄μ•Ό ν•˜λ―€λ‘œ O(n) μ‹œκ°„μ΄ κ±Έλ¦°λ‹€.
14+
- Space Complexity: O(n). n은 μ§‘μ˜ 개수.
15+
각 μ§‘κΉŒμ§€μ˜ μ΅œλŒ€ κΈˆμ•‘μ„ μ €μž₯ν•˜κΈ° μœ„ν•΄ 배열을 μ‚¬μš©ν•˜λ―€λ‘œ O(n) 만큼의 λ©”λͺ¨λ¦¬κ°€ ν•„μš”ν•˜λ‹€.
16+
"""
17+
if len(nums) == 1:
18+
return nums[0]
19+
20+
dp = [0] * len(nums)
21+
dp[0] = nums[0]
22+
dp[1] = max(nums[0], nums[1])
23+
24+
for i in range(2, len(nums)):
25+
dp[i] = max(dp[i - 1], dp[i - 2] + nums[i])
26+
27+
return dp[-1]

β€Žmeeting-rooms/mangodm-web.py

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
from typing import List
2+
3+
4+
class Solution:
5+
def canAttendMeetings(self, intervals: List[List[int]]) -> bool:
6+
"""
7+
- Idea: λͺ¨λ“  νšŒμ˜μ— 참석할 수 있으렀면, μ•žμ„œ μ˜€λŠ” νšŒμ˜κ°€ λλ‚˜λŠ” μ‹œκ°„μ΄
8+
λ‹€μŒ 회의의 μ‹œμž‘ μ‹œκ°„μ„ λ„˜μ–΄μ„œλŠ” μ•ˆλœλ‹€.
9+
이λ₯Ό ν™•μΈν•˜κΈ° μœ„ν•΄ μ£Όμ–΄μ§„ 회의 일정을 μ‹œμž‘ μ‹œκ°„ κΈ°μ€€μœΌλ‘œ μ •λ ¬ν•˜κ³ ,
10+
순차적으둜 λΉ„κ΅ν•˜μ—¬ μœ„μ˜ 쑰건을 μœ„λ°˜ν•˜λŠ” νšŒμ˜κ°€ μžˆλŠ”μ§€ ν™•μΈν•œλ‹€.
11+
- Time Complexity: O(nlogn). n은 회의의 수.
12+
정렬에 O(nlogn)이 μ†Œμš”λ˜κ³ , 순차 탐색을 ν•˜λŠ” λ°λŠ” O(n)이 ν•„μš”ν•˜λ‹€.
13+
- Space Complexity: O(1).
14+
μΆ”κ°€ 곡간은 μ‚¬μš©ν•˜μ§€ μ•ŠλŠ”λ‹€.
15+
"""
16+
intervals.sort()
17+
18+
for i in range(len(intervals) - 1):
19+
if intervals[i][1] > intervals[i + 1][0]:
20+
return False
21+
22+
return True

0 commit comments

Comments
Β (0)