
당신은 정수 배열 prices를 받습니다. prices[i]는 i번째 날의 특정 주식 가격입니다.
매일, 주식을 사고/팔 수 있습니다. 언제든지 주식은 최대 한 주만 보유할 수 있습니다. 그러나, 당일에 주식을 사고 바로 팔 수 있습니다.
가능한 최대 이익을 찾아 반환하세요.
예시 1:
입력: 가격 = [7,1,5,3,6,4]
출력: 7
설명: 2일차에 매수(가격 = 1)하고 3일차에 매도(가격 = 5), 이익 = 5-1 = 4.
그런 다음 4일차에 매수(가격 = 3)하고 5일차에 매도(가격 = 6), 이익 = 6-3 = 3.
총 이익은 4 + 3 = 7입니다.
예시 2:
입력: 가격 = [1,2,3,4,5]
출력: 4
설명: 1일째 매수(가격 = 1), 5일째 매도(가격 = 5), 이익 = 5-1 = 4.
총 이익은 4입니다.
예시 3:
입력: 가격 = [7,6,4,3,1]
출력: 0
설명: 긍정적인 이익을 얻을 수 있는 방법이 없으므로 최대 이익 0을 달성하기 위해 주식을 사지 않습니다.
제약:
min의 가격을 prices[]의 첫번째 index값으로 저장하고, 반복문을 순회하면서 min보다 큰 값을 찾아 수익을 연산하고 profit에 저장합니다.profit저장하고 min을 초기화시켜 줍니다.class Solution {
public int maxProfit(int[] prices) {
int min = prices[0]; // 가격이 작은 수를 저장하는 변수
int profit = 0; // 결과값 변수
for(int i = 1; i < prices.length; i++){
if(min > prices[i]) // 현재 가격보다 작으면
min = prices[i]; // 작은 가격 저장
else{
profit += prices[i] - min; // 아니면 현재 가격 - 이전 가격
min = prices[i]; // 수익 연산 후 min 초기화
}
}
return profit;
}
}