Say you have an array for which the ith element is the price of a given stock on day i.
Design an algorithm to find the maximum profit. You may complete as many transactions as you like (i.e., buy one and sell one share of the stock multiple times).
Note: You may not engage in multiple transactions at the same time (i.e., you must sell the stock before you buy again).
Example 1: Input: [7,1,5,3,6,4] Output: 7 Explanation: Buy on day 2 (price = 1) and sell on day 3 (price = 5), profit = 5-1 = 4. Then buy on day 4 (price = 3) and sell on day 5 (price = 6), profit = 6-3 = 3. Example 2: Input: [1,2,3,4,5] Output: 4 Explanation: Buy on day 1 (price = 1) and sell on day 5 (price = 5), profit = 5-1 = 4. Note that you cannot buy on day 1, buy on day 2 and sell them later, as you are engaging multiple transactions at the same time. You must sell before buying again. Example 3: Input: [7,6,4,3,1] Output: 0 Explanation: In this case, no transaction is done, i.e. max profit = 0.
주어진 배열에는 i번째 일에 살 수 있는 주식의 가격이 들어있다.
주식은 여러번 사고 팔 수 있으며 주식을 사거나 팔려면 내가 갖고있던 주식을 팔고 다시 사거나 해야한다. 중복으로 거래할 순 없다.
이렇게 했을때 최대 이익을 낼 수 있는 값을 도출해내는 문제이다.
class Solution {
public int maxProfit(int[] prices) {
int result = 0;
for (int i = 0; i < prices.length - 1; i++) {
if (prices[i + 1] > prices[i]) {
result += (prices[i + 1] - prices[i]);
}
}
return result;
}
}
구글링해서 약간의 힌트를 얻어서 풀었다 ㅠㅠ
다음엔 좀 더 혼자 고민해보고 풀어야 겠다
이 문제, 처음엔 주식 생각을 너무 많이해서
저점에서 사서 고점에서 사야 해 !! 이러면서 너무 어렵게 접근했었어요.
막상 마지막에 문제 풀고나니 조금 허탈했어요 ㅋㅋㅋ