문제
초 단위로 기록된 주식가격이 담긴 배열 prices가 매개변수로 주어질 때, 가격이 유지된 기간은 몇 초인지를 return 하도록 solution 함수를 완성하세요.
제한사항
- prices의 각 가격은 1 이상 10,000 이하인 자연수입니다.
- prices의 길이는 2 이상 100,000 이하입니다.
입출력 예
| prices | return |
|---|---|
| [498, 501, 470, 489] | [2, 1, 1, 0] |
입출력 예 설명
- 1초 시점의 ₩498은 2초간 가격을 유지하고, 3초 시점에 ₩470으로 떨어졌습니다.
- 2초 시점의 ₩501은 1초간 가격을 유지하고, 3초 시점에 ₩470으로 떨어졌습니다.
- 3초 시점의 ₩470은 최종 시점까지 총 1초간 가격이 떨어지지 않았습니다.
- 4초 시점의 ₩489은 최종 시점까지 총 0초간 가격이 떨어지지 않았습니다.
풀이
prices의 각 원소별로(i) 해당 인덱스 이후의 원소들을 탐색하며(j) prices[j]가 prices[i]보다 작아지거나, prices의 끝에 도달하는 경우 그 인덱스에서 i를 뺀 값을 저장한다.
맨 마지막 주식의 경우 무조건 0의 값을 가진다.
#include <vector>
using namespace std;
vector<int> solution(vector<int> prices) {
vector<int> answer;
for (int i = 0; i < prices.size() - 1; i++) {
for (int j = i + 1; j < prices.size(); j++) {
if (prices[i] > prices[j]) {
answer.push_back(j - i);
break;
}
if (j == prices.size() - 1)
answer.push_back(prices.size() - i - 1);
}
}
answer.push_back(0);
return answer;
}
출처: https://programmers.co.kr