Skip to content

Commit ab264d2

Browse files
committed
add: solve #265 Hose Robber II with ts
1 parent 870bca5 commit ab264d2

File tree

1 file changed

+42
-0
lines changed

1 file changed

+42
-0
lines changed

โ€Žhouse-robber-ii/Yjason-K.ts

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
/**
2+
* ์ฒ˜์Œ ์ง‘๊ณผ ๋ ์ง‘์€ ์—ฐ๊ฒฐ๋˜์–ด ์žˆ์Œ.
3+
* ์ฃผ์–ด์ง„ ๋ฐฐ์—ด์—์„œ ์ธ์ ‘ํ•œ ์ง‘์„ ํ„ธ์ง€ ์•Š๊ณ  ํ›”์น  ์ˆ˜ ์žˆ๋Š” ์ตœ๋Œ€ ๊ธˆ์•ก์„ ๊ณ„์‚ฐํ•˜๋Š” ํ•จ์ˆ˜
4+
*
5+
* @param {number[]} nums - ๊ฐ ์ง‘์— ์žˆ๋Š” ๋ˆ์˜ ์–‘์„ ๋‚˜ํƒ€๋‚ด๋Š” ๋ฐฐ์—ด
6+
* @returns {number} - ๊ฒฝ๋ณด๋ฅผ ์šธ๋ฆฌ์ง€ ์•Š๊ณ  ํ›”์น  ์ˆ˜ ์žˆ๋Š” ์ตœ๋Œ€ ๊ธˆ์•ก
7+
*
8+
* ์‹œ๊ฐ„ ๋ณต์žก๋„: O(n)
9+
* - ๋ชจ๋“  ์ง‘์„ ํ•œ ๋ฒˆ์”ฉ ๋ฐฉ๋ฌธ
10+
*
11+
* ๊ณต๊ฐ„ ๋ณต์žก๋„: O(1)
12+
* - ์ƒ์ˆ˜ ๊ฐœ์˜ ๋ณ€์ˆ˜๋งŒ ์‚ฌ์šฉ
13+
*/
14+
function rob(nums: number[]): number {
15+
const houses = nums.length;
16+
17+
if (houses === 1) return nums[0];
18+
19+
const robber = (nums: number[], start: number, end: number) => {
20+
let prevMax = 0; // ๋ฐ”๋กœ ์ด์ „ ์ง‘๊นŒ์ง€ ํ„ธ์–ด์„œ ์–ป์€ ์ตœ๋Œ€ ๊ธˆ์•ก
21+
let currMax = 0; // ํ˜„์žฌ ์ง‘๊นŒ์ง€ ํ„ธ์–ด์„œ ์–ป์€ ์ตœ๋Œ€ ๊ธˆ์•ก
22+
23+
// start๋ถ€ํ„ฐ end๊นŒ์ง€ ๋ฐ˜๋ณตํ•˜๋ฉฐ DP ์ง„ํ–‰
24+
for (let i = start; i <= end; i++) {
25+
// ํ˜„์žฌ ์ง‘(i)์„ ํ„ธ ๊ฒฝ์šฐ์™€ ํ„ธ์ง€ ์•Š์„ ๊ฒฝ์šฐ์˜ ์ตœ๋Œ€ ๊ธˆ์•ก ๊ณ„์‚ฐ
26+
const temp = currMax;
27+
currMax = Math.max(currMax, prevMax + nums[i]);
28+
prevMax = temp;
29+
}
30+
31+
return currMax;
32+
}
33+
34+
35+
// ์›ํ˜• ๊ตฌ์กฐ์ด๋ฏ€๋กœ, ์ฒซ ๋ฒˆ์งธ ์ง‘์„ ํ„ธ ๊ฒฝ์šฐ์™€ ๋งˆ์ง€๋ง‰ ์ง‘์„ ํ„ธ ๊ฒฝ์šฐ๋Š” ๋™์‹œ์— ๋ถˆ๊ฐ€๋Šฅ
36+
// ๋‘ ๊ตฌ๊ฐ„์„ ๋”ฐ๋กœ ๊ณ„์‚ฐํ•˜๊ณ  ์ตœ๋Œ€๊ฐ’์„ ๋ฐ˜ํ™˜
37+
const max1 = robber(nums, 0, houses - 2); // ์ฒซ ๋ฒˆ์งธ ์ง‘๋ถ€ํ„ฐ ๋งˆ์ง€๋ง‰์—์„œ ๋‘ ๋ฒˆ์งธ ์ง‘๊นŒ์ง€ ๊ณ ๋ ค
38+
const max2 = robber(nums, 1, houses - 1); // ๋‘ ๋ฒˆ์งธ ์ง‘๋ถ€ํ„ฐ ๋งˆ์ง€๋ง‰ ์ง‘๊นŒ์ง€ ๊ณ ๋ ค
39+
40+
return Math.max(max1, max2);
41+
42+
};

0 commit comments

Comments
ย (0)