방구석 컴퓨터/방구석 자료구조&알고리즘

[LeetCode][Grind 75] 121. Best Time to Buy and Sell Stock

CCEO 2024. 11. 1. 11:26
반응형

문제 해결 방안

  1. 초기에 구매할 최소값(min)은 배열의 첫번째 값,  최대이익(maxProfit)은 0으로 초기화하고, 두번째 값부터 순서대로 순회한다.
  2. 각 순회마다 현재 최소값보다 작으면 min을 다시 세팅, 아니면 maxProfit을 계산한다

겪은 문제점

뒤에 것을 신경쓸 필요 없으니 필요한 값만을 저장하며 앞으로 순회하기만 하면 됐는데, 쓸데없이 이중 반복문으로 처음에 접근한게 시간 초과가 나오게 된 문제점이었습니다.


정답 코드

public static int maxProfit(int[] prices) {
    int min = prices[0];
    int profit = 0;

    for(int i=1; i<prices.length; i++){
        if(prices[i] < min){
            min = prices[i];
        }else{
            profit = Math.max(profit, prices[i] - min);
        }
    }
    return profit;
}
반응형