Skip to content

Commit d68a21d

Browse files
committed
add: solve #198 House Robber with ts
1 parent 4c42e81 commit d68a21d

File tree

1 file changed

+30
-0
lines changed

1 file changed

+30
-0
lines changed

β€Žhouse-robber/YJason-K.tsβ€Ž

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
/**
2+
* μ£Όμ–΄μ§„ λ°°μ—΄μ—μ„œ μΈμ ‘ν•œ 집을 ν„Έμ§€ μ•Šκ³  ν›”μΉ  수 μžˆλŠ” μ΅œλŒ€ κΈˆμ•‘μ„ κ³„μ‚°ν•˜λŠ” ν•¨μˆ˜
3+
* - μ‹œκ°„ λ³΅μž‘λ„: O(n)
4+
* - 배열을 ν•œ 번 μˆœνšŒν•˜λ©΄μ„œ μ΅œλŒ€ κΈˆμ•‘μ„ 계산
5+
* - 곡간 λ³΅μž‘λ„: O(1)
6+
* - μΆ”κ°€ λ°°μ—΄ 없이 λ³€μˆ˜λ§Œ μ‚¬μš©ν•˜μ—¬ 곡간 νš¨μœ¨μ„±μ„ μ΅œμ ν™”
7+
*
8+
* @param {number[]} nums - 각 집에 μžˆλŠ” 돈의 양을 λ‚˜νƒ€λ‚΄λŠ” λ°°μ—΄
9+
* @returns {number} - 경보λ₯Ό μšΈλ¦¬μ§€ μ•Šκ³  ν›”μΉ  수 μžˆλŠ” μ΅œλŒ€ κΈˆμ•‘
10+
*/
11+
function rob(nums: number[]): number {
12+
if (nums.length === 0) return 0; // 빈 λ°°μ—΄ 처리
13+
if (nums.length === 1) return nums[0]; // 집이 ν•œ μ±„λ§Œ μžˆλŠ” 경우, κ·Έ μ§‘μ˜ 돈 λ°˜ν™˜
14+
15+
// 1. λ³€μˆ˜ μ΄ˆκΈ°ν™”: 이전 두 μ§‘κΉŒμ§€μ˜ μ΅œλŒ€ κΈˆμ•‘
16+
let prev2 = 0; // 두 번째 이전 μ§‘κΉŒμ§€μ˜ μ΅œλŒ€ κΈˆμ•‘
17+
let prev1 = nums[0]; // 첫 번째 이전 μ§‘κΉŒμ§€μ˜ μ΅œλŒ€ κΈˆμ•‘
18+
19+
// 2. λ°°μ—΄ 순회: 각 μ§‘μ—μ„œ ν›”μΉ  수 μžˆλŠ” μ΅œλŒ€ κΈˆμ•‘ 계산
20+
for (let i = 1; i < nums.length; i++) {
21+
// ν˜„μž¬ μ§‘κΉŒμ§€μ˜ μ΅œλŒ€ κΈˆμ•‘μ€ (ν˜„μž¬ μ§‘ + prev2) λ˜λŠ” prev1 쀑 더 큰 κ°’
22+
const cur = Math.max(nums[i] + prev2, prev1);
23+
24+
// 이전 두 μ§‘μ˜ μ΅œλŒ€ κΈˆμ•‘ μ—…λ°μ΄νŠΈ
25+
prev2 = prev1;
26+
prev1 = cur;
27+
}
28+
29+
return prev1; // λ§ˆμ§€λ§‰ μ§‘κΉŒμ§€μ˜ μ΅œλŒ€ κΈˆμ•‘ λ°˜ν™˜
30+
}

0 commit comments

Comments
Β (0)