[LeetCode] Best Time to Buy and Sell Stock II Solution

Hyebin·2021년 3월 14일
0
post-thumbnail
post-custom-banner

문제

You are given an array prices where prices[i] is the price of a given stock on the ith day.

Find the maximum profit you can achieve. 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 simultaneously (i.e., you must sell the stock before you buy again).

배열의 값은 주식의 가격입니다.
달성 할 수있는 최대 수익을 찾으십시오. 원하는만큼의 거래를 완료 할 수 있습니다 (즉, 주식 1 주를 사고 여러 번 판매).

참고 : 동시에 여러 거래에 참여할 수 없습니다 (즉, 다시 구매하기 전에 주식을 매도해야합니다).

- Example :

Input: prices = [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.

- 제출 코드 :

  1. prices 배열 값 조회를 위해 반복 루프 돈다.
  2. 전날 사서 오늘 파는 값을 semiProfit에 할당한다.
  3. semiProfit이 0보다 크면 이익이므로
  4. profit에 semiProfit만큼 계속 더해간다.
/**
 * @param {number[]} prices
 * @return {number}
 */
var maxProfit = function(prices) {
    //달성할 수 있는 최대 이익.. 
    //주식의 가격이 배열의 값으로 들어간다. 
    let profit = 0;
    
    for(let i=0; i<prices.length-1; i++) {
        //i+1날 가격과 i날 가격 차이가 이익이다. 
        let semiProfit = prices[i+1] - prices[i];  
        
        
        //이익이 0보다 크면 
        if( semiProfit > 0 ) {
            //최종이익은 중간이익을 계속 더한값이다.
            profit += semiProfit; 
        }  
        
    }   
    return profit;
};

- 실행 속도 비교

post-custom-banner

0개의 댓글