Daily LeetCode Challenge - 121. Best Time to Buy and Sell Stock

Min Young Kim·2023년 2월 25일
0

algorithm

목록 보기
80/198

Problem From.

https://leetcode.com/problems/best-time-to-buy-and-sell-stock/

오늘 문제는 주어진 배열중의 하나에서 주식을 사고 그 다음에 있는 index 들 중의 하나에서 판다고 가정했을때, 가장 큰 이익을 얻을 수 있는 값을 리턴하는 문제였다.

주어진 배열을 처음부터 끝까지 순회하면서, 최솟값인 min 이익인 profit 을 가지고 각 날짜에서 해당 날짜의 값 - min 이 현재 가지고 있는 profit 보다 크면 교체 해주었다.

그리고 min 값이 해당 날짜의 값보다 크면 그것 역시 교체해주는 식으로 O(N) 의 시간복잡도를 가지는 코드를 만들 수 있었다.

class Solution {
    fun maxProfit(prices: IntArray): Int {
        var answer = 0
        var min = Int.MAX_VALUE
        var profit = 0
        prices.forEach {
            profit = it - min
            if(profit > answer) answer = profit
            if(it < min) min = it 
        }
        return answer
    }
}
profile
길을 찾는 개발자

0개의 댓글