[PROGRAMMERS] 주식가격(Level2)

yamkim·2020년 11월 4일
0

PROGRAMMERS

목록 보기
8/13

주식가격(Level2)

  • 문제 링크: 코딩테스트 연습 > 스택/큐 > 주식가격

  • 문제 이해

    1. index가 시간순서로 주어진 prices vector에서, 각 가격이 지속된 시간을
      반환해야합니다.
    2. prices = [1,2,3,2,3]이라면, 0초에 가격이 1, 1초에 가격이 2... 와 같은
      식으로 생각합니다.
    3. 0초에 가격이 1이었던 주식은, 4초까지 가격이 떨어지지 않았으므로, 4를 반환합니다.
      2초에 3이었던 주식은 3초에 2로 떨어지므로, 1을 반환합니다.
  • 알고리즘 구현

    1. 저는 prices의 첫부분을 기준으로 잡고, 그 뒷부분들과 비교하면서 시간을 증가시키는
      방식으로 구현했습니다.(기준 인덱스는 루프가 끝날때마다 증가시킵니다.)
      (prices[0]이 기준이면, 끝까지 떨어지지 않으므로 endIdx까지 값이 증가합니다.)
    2. [문제 이해]의 예시에서 3의 경우 역시 1초는 각격을 유지한 것으로 보기 때문에,
      무조건 1초는 세었습니다.
    3. 단, 마지막 인덱스 값은 무조건 0초기 때문에, 루프를 탈출한 후에 값을 따로 넣었습니다.
  • 알고리즘

#include <string>
#include <vector>

using namespace std;

vector<int> solution(vector<int> prices) {
    vector<int> answer;
    int begIdx = 0, endIdx = prices.size() - 1;
    while (begIdx < endIdx) {
    	int timeTick = 0;
        int price = prices[begIdx];
        for (int i = begIdx + 1; i <= endIdx; ++i) {
            ++timeTick;
            if (price > prices[i]) break;
        }
        answer.push_back(timeTick); 
        ++begIdx;
    }
    answer.push_back(0); 
    return answer;
}

0개의 댓글