개인 공부/코딩테스트
[C++][leetcode] Best Time to Buy and Sell Stock II :: seoftware
seowit
2020. 4. 5. 17:14
문제
접근방법
prices의 한 원소가 다음 원소와의 차이를 계산하여 양수이면 더해주고 음수이면 넘어간다.
양수이면 가격이 오르는거니까 현재 원소가 buy 가격, 다음 원소가 sell 가격이 된다.
소스코드
class Solution {
public:
int maxProfit(vector<int>& prices) {
int answer = 0;
if(prices.size() <= 1) return 0;
for(int i = 0; i < prices.size()-1; i++){
if(prices[i+1] - prices[i] > 0) answer += (prices[i+1] - prices[i]);
}
return answer;
}
};
1. prices의 원소가 1개 이하인 경우에는 buy 와 sell 을 진행하지 않으므로 0을 리턴한다. (이 조건 없으면 런타임 에러)
2. 0부터 전체개수 -1 까지의 모든 가격을 바로 다음 가격과 비교한다. 만약 양수이면 answer에 뺀 값을 더해준다.
효율성
이 코드의 경우 example 2 를 풀 때 연산을 4번을 한다. 따라서 효율성이 좋은 코드는 아니다..