Post

leetcode(리트코드)213-House Robber II

leetcode(리트코드)213-House Robber II

leetcode 213 - House Robber II 문제입니다.

1. 문제

https://leetcode.com/problems/house-robber-ii/


2. Input , Output


3. 분류 및 난이도

Medium 난이도 문제입니다.
https://www.teamblind.com/post/New-Year-Gift---Curated-List-of-Top-75-LeetCode-Questions-to-Save-Your-Time-OaM1orEU에서 추천한 문제입니다.


4. 문제 해석

  • DP문제입니다.
  • 프로그래머스에 똑같은 문제가 있습니다. ‘도둑질’

5. code

c++

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
class Solution {
public:
    int rob(vector<int>& nums) {
        if(nums.size()==1)
            return nums[0];
        //DP를 2개만듦
        //DP는 첫 번째 집을 들르는 경우
        //DP2는 두 번째 집을 들르는 경우
        int* DP = new int[nums.size()];
        int* DP2 = new int[nums.size()];
        DP[0] = nums[0];
        DP[1] = nums[0];
        
        DP2[0] = 0;
        DP2[1]=nums[1];
        
        for(size_t i =2;i<nums.size();++i)
        {
            if(i !=nums.size()-1)
            {
                DP[i] = max(DP[i-2] + nums[i], DP[i-1]);
            }
            DP2[i] = max(DP2[i-2]+nums[i],DP2[i-1]);
        }
        int result = max(DP[nums.size()-2],DP2[nums.size()-1]);
        
        return result;
    }
};

6. 결과 및 후기, 개선점

코드에 대한 설명이 필요하신 분은 댓글을 달아주세요.!!

c++ 100% python ??%

This post is licensed under CC BY 4.0 by the author.