30-Day LeetCoding Challenge - 5Day (Best Time to Buy and Sell Stock II)

w-beom·2020년 4월 5일
0

Best Time to Buy and Sell Stock II

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번째 일에 살 수 있는 주식의 가격이 들어있다.
주식은 여러번 사고 팔 수 있으며 주식을 사거나 팔려면 내가 갖고있던 주식을 팔고 다시 사거나 해야한다. 중복으로 거래할 순 없다.
이렇게 했을때 최대 이익을 낼 수 있는 값을 도출해내는 문제이다.

  • Example1
    • 2일 날 1의 가격으로 주식 구매
    • 3일 날 5의 가격으로 주식 판매, 이익 5-1 = 4
    • 4일 날 3의 가격으로 주식 구매
    • 5일 날 6의 가격으로 주식 판매, 이익 6-3 = 3
      총 이익 4+3 = 7
  • Exmaple2
    • 1일 날 1의 가격으로 주식 구매
    • 5일 날 5의 가격으로 주식 판매
      총 이익 5-1 = 4
  • Exmaple3
    • 이익을 낼 수 없으므로 0 리턴

Soultion

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;
   }
}

마침

구글링해서 약간의 힌트를 얻어서 풀었다 ㅠㅠ
다음엔 좀 더 혼자 고민해보고 풀어야 겠다

profile
습득한 지식과 경험을 나누며 다른 사람들과 문제를 함께 해결해 나가는 과정에서 서로가 성장할 수 있는 기회를 만들고자 노력합니다.

2개의 댓글

comment-user-thumbnail
2020년 4월 6일

이 문제, 처음엔 주식 생각을 너무 많이해서
저점에서 사서 고점에서 사야 해 !! 이러면서 너무 어렵게 접근했었어요.

막상 마지막에 문제 풀고나니 조금 허탈했어요 ㅋㅋㅋ

1개의 답글