🍪 Ect/#Study

[99클럽 코테 스터디] 42일차 TIL DP

개발한 너굴씨 2024. 9. 1. 21:47
728x90

 

 

오늘의 문제는 LeetCode

 

121. Best Time to Buy and Sell Stock

 

 

문제

 

 

 

문제 설명 

배열 prices에 담긴 stock을 사고 팔아서 최대 이익을 반환하는 문제입니다. prices[i]는 i번째 날의 stock 가격을 의미합니다. 

당일에 산 stock은 판매할 수 없으며 무조건 구매가 판매보다 먼저 이루어져야 합니다. 만약 수익이 나지 않을 경우, 0을 반환해야 합니다. 

 

[입력 예시]

prices = [7,1,5,3,6,4]

[출력 예시]

5

 

 

 

 

문제 풀이 시간 

권장 풀이 시간은 60분이었고, 저는 43분이 걸렸습니다.

 

 

 

문제 접근 방식

매입 금액과 이익을 계산할 변수로 설정합니다. prices 배열을 순회하며 현재 주식 가격을 판매 가격으로 간주합니다. 만약 판매 금액이 매입 금액보다 클 경우 현재 이익과 기존 이익을 비교해 큰 값을 이익 변수에 저장합니다. 

만약 매입 금액이 판매 금액보다 적을 경우, 해당 가격을 새로운 매입 금액으로 갱신합니다. 

위 과정을 반복해 최종적으로 최대 이익을 반환합니다. 

 

 

 

문제 풀이

class Solution {
    public int maxProfit(int[] prices) {
    
        int profit = 0;
        int buy = prices[0];
        
        for(int sell : prices) {
            if(sell > buy) {
                profit = Math.max(profit, sell - buy);
            } else {
                buy = sell;
            }
        }
        return profit;
    }
}

 

 

 

 

 

 

 

 

이렇게 오늘 42일차 TIL을 작성해 보았습니다.

 

 

 

 

728x90