본문 바로가기
개인 공부/코딩테스트

[C++][leetcode] Best Time to Buy and Sell Stock II :: seoftware

by seowit 2020. 4. 5.

문제

 

접근방법

 

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번을 한다. 따라서 효율성이 좋은 코드는 아니다..

댓글