본문 바로가기
🍪 Ect/#Study

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

by 개발한 너굴씨 2024. 9. 1.
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

댓글