👀 문제
https://leetcode.com/problems/best-time-to-buy-and-sell-stock/
👊 도전
1. 설계
- 0번째 인덱스를 buy한다고 가정한다.
- buy보다 더 작은 값이 나오면 갱신한다.
- 아닐 경우, i로 판다고 가정하고 이윤을 계산한다.
2. 구현
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
/**
*
* @author HEESOO
*
*/
class Solution {
public int maxProfit(int[] prices) {
if(prices.length<2) return 0; // 0 또는 1은 0리턴
int buy=prices[0]; // 첫 번째는 buy
int answer=0;
for(int i=1;i<prices.length;i++){
// 더 싸게 살 수 있으면 buy
if(buy>prices[i]) buy=prices[i];
// i로 판다고 가정했을 때 이윤 계산 및 max 체크
else answer=Math.max(answer, prices[i]-buy);
}
return answer;
}
}
3. 결과
🤟 성공 🤟
4. 설명
- 배열을 체크하며 buy보다 더 작은 값이 있다면 갱신, 아니라면 이익을 계산한다
- buy=prices[0]으로 초기화한다. 처음 값으로 샀다고 가정한다.
- 인덱스 1부터 체크하며 buy>prices[i]면 더 작은 값으로 산다.
- 아니라면, 이익을 계산하고 기존 값과 비교하여 answer에 더 큰 값을 저장한다.