Skip to main content

Maximum Money

Problem​

Given a street of N houses (a row of houses), each house having K amount of money kept inside; now there is a thief who is going to steal this money but he has a constraint/rule that he cannot steal/rob two adjacent houses. Find the maximum money he can rob.

Examples:​

Example 1:

Input:
N = 5 , K = 10
Output:
30
Explanation:
The Robber can rob from the first, third and fifth houses which will result in 30.

Example 2:

Input:
N = 2 , K = 12
Output:
12
Explanation:
The Robber can only rob from the first or second which will result in 12.

Your task:​

You don't need to read input or print anything. Your task is to complete the function maximizeMoney() which takes 2 Integers N and K as input and returns the answer.

  • Expected Time Complexity: O(1)O(1)
  • Expected Auxiliary Space: O(1)O(1)

Constraints:​

  • 1<=N,K<=1031 <= N,K <= 10^3

Solution​

Python​

def maximizeMoney(self, N , K):
return ((N+1)//2)*K;

Java​

static int maximizeMoney(int N , int K) {
return ((N+1)/2)*K;
}

C++​

int maximizeMoney(int N , int K) {
return ((N+1)/2)*K;
}

C​

int maximizeMoney(int N , int K) {
return ((N+1)/2)*K;
}
  • Time Complexity: O(1)O(1)
  • Auxiliary Space: O(1)O(1)