๐Ÿฅž BE
home

198_House Robber

๋‹ด๋‹น์ž
์™„๋ฃŒ ์—ฌ๋ถ€
Solved
์š”์•ฝ
๋‚ ์งœ
2024/09/04
ํƒœ๊ทธ
DP
๋‚œ์ด๋„
Medium
์ถœ์ฒ˜
LeetCode

์ฝ”๋“œ

class Solution { // ์žฌ๊ท€ ๋ธŒ๋ฃจํŠธํฌ์Šค // public int rob(int[] nums) { // return rob(nums, nums.length - 1); // } // // public int rob(int[] nums, int n) { // if (n < 0) { // return 0; // } // // // ์ด์ „ ๊ฒฐ๊ณผ // return Math.max(rob(nums, n - 1), rob(nums, n - 2) + nums[n]); // } // DP public int rob(int[] nums) { // ์ œ์•ฝ์กฐ๊ฑด : 1 <= nums.length <= 100 -> ๋ฐฐ์—ด ๊ธธ์ด 1์ด๋ฉด ๋ฐ”๋กœ ๋ฆฌํ„ด if (nums.length == 1) return nums[0]; int[] dp = new int[nums.length]; // DP -> ํƒ€๋ทธ๋ ˆ์ด์…˜ dp[0] = nums[0]; // ์ฒซ ๋ฒˆ์งธ ์ง‘์„ ํ„ธ์—ˆ์„ ๋•Œ ๊ธˆ์•ก dp[1] = Math.max(nums[0], nums[1]); // ๋‘ ๋ฒˆ์งธ ์ง‘๊นŒ์ง€์˜ ์ตœ๋Œ€ ๊ธˆ์•ก // ๋‚˜๋จธ์ง€ ์ง‘๋“ค ์ตœ๋Œ€ ๊ธˆ์•ก ๊ณ„์‚ฐ (์ด์ „ ๊ฒฐ๊ณผ์™€ ์ „์ „+ํ˜„์žฌ ๊ฒฐ๊ณผ ์ค‘ ๋” ํฐ ๊ฐ’) ํ•œ ์นธ ๋„์›Œ์„œ ๊ณ„์‚ฐํ•ด์•ผ ํ•˜๋‹ˆ๊นŒ! for (int i = 2; i < nums.length; i++) { dp[i] = Math.max(dp[i - 1], dp[i - 2] + nums[i]); } // ๋งˆ์ง€๋ง‰ ๊ฐ’์„ ๋ฆฌํ„ด (์ตœ๋Œ“๊ฐ’) return dp[nums.length - 1]; } }
Java
๋ณต์‚ฌ

๋ฌธ์ œ ํ•ด๊ฒฐ ์•„์ด๋””์–ด

ํƒ€๋ทธ๋ ˆ์ด์…˜์„ ํ™œ์šฉํ•œ DP๋กœ ํ’€ ์ˆ˜ ์žˆ๋‹ค. ์ œ์ผ ๋จผ์ € ๋น„๊ตํ•ด์•ผ ํ•˜๋Š” 0, 1๋ฒˆ ๊ฐ’์„ ๋ฏธ๋ฆฌ ๊ณ„์‚ฐํ•œ๋‹ค. ์ดํ›„ ํ•œ ์นธ ์ด์ƒ ๋„์›Œ์ ธ ์žˆ๋Š” ์ง‘์„ ๋„๋‘‘์งˆ ํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ์กฐ๊ฑด์„ ๊ณ ๋ คํ•˜์—ฌ max ํ•จ์ˆ˜๋กœ ๋น„๊ตํ•˜๋ฉด ์‰ฝ๊ฒŒ ํ’€์ด๊ฐ€ ๊ฐ€๋Šฅํ•œ ๋ฌธ์ œ์ด๋‹ค.