Leetcode Java Best Time to Buy and Sell Stock
업데이트:
문제
코드
class Solution {
public int maxProfit(int[] prices) {
int min = prices[0];
int max = 0;
for (int idx = 0; idx < prices.length; idx++) {
if (prices[idx] < min) {
min = prices[idx];
}
max = Math.max(max, prices[idx] - min);
}
return max;
}
}
결과
설명
- 주식에 대한 가격 정보를 담은 배열 prices를 이용하여 이익이 나올 수 있는 구간의 최대 금액을 찾는 문제이다.
- 단, 이득이 되는 구간이 없는 경우 0을 주어진 문제의 결과로 반환해야 한다.
- 주어진 문제를 풀기 위한 변수를 정의한다.
- 변수 min을 주식의 저점(저가 지점)을 저장하기 위해 정의하여 prices의 첫 값으로 초기화 시킨다.
- 변수 max를 최대 이득이 되는 금액을 저장하기 위해 정의하여 0으로 초기화 시킨다.
- 반복문을 이용하여 주어진 prices 배열을 순회하여 최대 이득이 되는 금액을 탐색한다.
- 만일 prices[idx]의 값이 min보다 작은 구간이면, min에 prices[idx] 값을 저장하여 최대 이익을 계속 탐색시킨다.
- 최대 이익을 저장하는 max에 현재 최대 이익인 max의 값과 $prices[idx] - min$의 값 중 큰 값을 저장하고 반복문을 계속 수행한다.
- 반복이 완료되면 최대 이익을 저장한 변수 max를 주어진 문제의 결과로 반환한다.
소스
Sample Code는 여기에서 확인 가능합니다.
댓글남기기