0. 문제
https://leetcode.com/problems/best-time-to-buy-and-sell-stock/
1. 문제 설명
- 문제에서 1개의 배열(prices)이 주어진다.
- 각 배열의 원소는 매일의 주식 가격을 의미한다. ex) prices[0] = 첫째 날의 주식 가격, prices[1] = 둘째 날의 주식 가격
- 주식을 구매하고 판매하여 만들 수 있는 가장 큰 수익을 찾는 것이 문제의 핵심이다.
- 다만, 미래의 주식을 과거에 팔 수 없다.
2. 문제 해설
- 오늘 주식 가격을 prices[0]이라고 가정할 때, 미래 시점의 주식 가격 중 가장 큰 가격을 찾아야 한다.
- 그러므로 (오늘 주식 가격 - 내일 주식 가격)을 기본 판단 조건으로 사용한다.
- 연산 결과가 음수라면, 내일 주식 가격이 오늘 주식 가격보다 낮은 것이므로 내일 주식 가격을 구매시점으로 판단한다.
- 연산 결과가 양수라면, 수익이 발생한 것이므로 이를 저장한다.
- 연산 결과가 양수일 때마다 기존의 수익과 비교하여 최대 수익을 찾는다.
3. 정답 코드
class Solution {
public int maxProfit(int[] prices) {
int current = prices[0];
int maxProfit = 0;
for(int i = 1; i < prices.length; i++) {
int temp = prices[i] - current;
if(temp < 0) {
current = prices[i];
}
else {
maxProfit = Math.max(maxProfit, temp);
}
}
return maxProfit;
}
}
'Algorithm > 알고리즘 문제풀이' 카테고리의 다른 글
LeetCode 118(Pascal's Triangle, java) (0) | 2022.04.13 |
---|---|
LeetCode 566(Reshape the Matrix, java) (0) | 2022.04.13 |
LeetCode 350(Intersection of Two Arrays 2, java) (0) | 2022.04.12 |
LeetCode 88(Merge Sorted Array, java) (0) | 2022.04.12 |
LeetCode 1(Two Sum, java) (0) | 2022.04.11 |
댓글