풀었던 문제를 다시 풀어보자!
풀었던 문제가 맞나싶다
초 단위로 기록된 주식가격이 담긴 배열 prices가 매개변수로 주어질 때, 가격이 떨어지지 않은 기간은 몇 초인지를 return 하도록 solution 함수를 완성하세요.
prices.size() - 1 - (현재 초)
가answer
에 입력되어야 한다.time
변수를 prices.size() - 1 - (현재 초)
로 초기화 하고 시작한다.(떨어지는 초) - (현재 초)
를 time
변수에 넣고 내부 반복문을 종료한다.time
은 처음에 초기화한 값으로 끝난다.answer
배열에 time
변수를 삽입한다.answer
배열을 return
한다.null
#include <string>
#include <vector>
using namespace std;
vector<int> solution(vector<int> prices) {
vector<int> answer;
for (int i = 0; i < prices.size(); ++i) {
int time = prices.size() - 1 - i;
for (int j = i + 1; j < prices.size(); ++j) {
if (prices[i] > prices[j]) {
time = j - i;
break;
}
}
answer.push_back(time);
}
return answer;
}
#include <string>
#include <vector>
#include <stack>
using namespace std;
vector<int> solution(vector<int> prices) {
int n = prices.size();
vector<int> answer(n);
stack<int> s;
for (int i = 0; i < n; i++) {
while (!s.empty() && prices[s.top()] > prices[i]) {
answer[s.top()] = i - s.top();
s.pop();
}
s.push(i);
}
while (!s.empty()) {
answer[s.top()] = n - s.top() - 1;
s.pop();
}
return answer;
}