알고리즘, 자료구조/Codility

[Javascript] Codility Lesson9 - MaxProfit

jaee 2022. 6. 21. 21:33

 

문제: https://app.codility.com/programmers/lessons/9-maximum_slice_problem/max_profit/

 

문제 요약

  • N개의 정수를 갖는 배열 A가 주어지며, 각 요소는 주식의 일별 가격을 나타낸다.
  • 주식을 사고 팔았을 때 얻을 수 있는 최대 이익을 반환하고, 만약 이익을 내는 경우가 없다면 0을 반환한다.
  • P는 주식을 산 날, Q는 주식을 판 날이며 0 < P <= Q < N 이다.

 

function solution(A) {
    let profit = 0;
    let buy = A[0];

    for (let i = 1; i < A.length; i++) {
        let tmp = A[i] - buy;

        // i day의 주식의 최저 가격이면 buy에 A[i]를 할당한다.
        buy = A[i] < buy ? A[i] : buy;
        
        profit = tmp > profit ? tmp : profit;
    }

    // profit이 0보다 크면 profit 반환, 그렇지 않다면 0을 반환한다.
    profit = profit > 0 ? profit : 0;

    return profit;
}

https://app.codility.com/