문제
접근방법
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번을 한다. 따라서 효율성이 좋은 코드는 아니다..
'개인 공부 > 코딩테스트' 카테고리의 다른 글
[C++][DP][백준] 2×n 타일링 2 :: seoftware (0) | 2020.04.07 |
---|---|
[C++][백준] 11726번 2×n 타일링 :: seoftware (0) | 2020.04.07 |
[C++][leetcode] Move Zeros :: seoftware (0) | 2020.04.05 |
[C++][leetcode] Maximum Subarray :: seoftware (0) | 2020.04.03 |
[C++][leetcode] single number :: seoftware (0) | 2020.04.03 |
댓글