문제설명
- 인자로 정수 배열이 주어진다.
- 배열의 각 항목은 날짜의 순서대로 나열되있으며, 주식의 가격을 의미한다.
- 배열 중 하루를 선택하고 다른 날짜에 주식을 팔아서 가장 크게 수익이 나는 가격을 반환하라.
- 수익이 0보다 크지 않으면, 0을 반환하라
문제풀이
- 배열을 순회하면서 가장 가격이 저렴한 날짜를 선별한다.
- 가장 저렴한 날짜와 현재 순회하고 있는 주식 가격의 시세 차이를 계산한다.
- 이렇게 계산한 값과 이전에 저장된 수익을 비교하여 가장 큰 값을 저장한다.
func maxProfit(_ prices: [Int]) -> Int {
var buyAt = 0
var maxProfit = 0
for i in 1..<prices.count {
if prices[i] < prices[buyAt] {
buyAt = i
}
maxProfit = max(prices[i] - prices[buyAt], maxProfit)
}
return maxProfit
}
print(maxProfit([7,1,5,3,6,4])) // 5
print(maxProfit([7,6,4,3,1])) // 0
print(maxProfit([1,2,3,4,5])) // 4