날마다 주식 종가가 담긴 prices가 주어지는데 언제 매수해서 매도하는 것이 가장 큰 수익이 나는지 구하는 문제다.
for-each문으로 prices를 돌면서 작은 값이 나오면 min에 저장하고 price와 현재까지 최소 가격인 min의 차이로 최대 수익을 구한다.
현재 가격 price에서 최소 가격인 min을 뺀 수익을 계속 비교하기 때문에 최대 수익은 기록이 되고,
최소 가격이 갱신이 되더라도 남은 price와의 차이가 적으면 수익은 갱신이 되지 않는다.
public int maxProfit(int[] prices) {
int min = Integer.MAX_VALUE;
int profit = 0;
for (int price : prices) {
if (price < min) {
min = price;
}
profit = Math.max(profit, price - min);
}
return profit;
}
'코딩테스트' 카테고리의 다른 글
[프로그래머스, LEVEL2] 게임 맵 최단거리 (BFS) (0) | 2022.12.15 |
---|---|
[LeetCode] 198. House Robber (0) | 2022.12.14 |
[LeetCode] 931. Minimum Falling Path Sum (0) | 2022.12.13 |
[LeetCode, 124] Binary Tree Maximum Path Sum (0) | 2022.12.11 |
[릿코드] 1026. Maximum Difference Between Node and Ancestor (0) | 2022.12.10 |