[오늘의 코테연습장][LeetCode] Best Time to Buy and Sell Stock 2

Mini_me·2023년 8월 24일
0

공부[코테연습장]

목록 보기
19/36
post-thumbnail

🔖 문제

  • prices 배열에는 각 인덱스마다, 그날의 지정된 주식가격이 저장되어있습니다.
  • 매입매도를 적절히 진행하여, 최대한 많은 이익을 return 해야 합니다.

🔖접근 방식

이 문제의 경우 푸는 데에 시간이 많이 걸렸습니다.
처음에는 Best Time to Buy and Sell Stock 1의 문제의 해결 방식처럼 풀려고했습니다.
첫번째로 시도했던 방법은 최대값 , 최솟값을 찾은 후, profit구하고, 그다음으로 큰 최대값, 최솟값을 찾아서 profit에 더할려고했는데, 한 날에 주식매입을 했으면, 그 날 이후에 매도를 해야했기에 이 방법을 쓰지 못했습니다.

그래서 조금 더 단순하게 생각해볼려고했습니다.
sum이라는 변수를 두어 요소들을 다음 요소들과 비교하며 더해가는 방식으로 구현했습니다.

  1. 배열을 순회하며, 현재 날짜(현재 인덱스)의 주식가격이 다음날 주식가격보다 작다면
    다음날 주식 가격 - 현재 날짜의 주식가격을 sum에 더합니다.
  2. sum을 return 합니다.

🔖문제 풀이 코드


class Solution {
    public int maxProfit(int[] prices) {
        if (prices == null || prices.length == 0) {
            return 0;
        }

        int sum = 0;
        
        for (int i = 0; i < prices.length - 1; i++) { 
            if (prices[i] < prices[i+1]) { // 현재 가격이 다음날 가격보다 작으면
                sum += prices[i+1] - prices[i]; // 그 차이를 sum에 더함
            }
        }
        
        return sum; 
    }
}

0개의 댓글