초 단위로 기록된 주식가격이 담긴 배열 prices가 매개변수로 주어질 때, 가격이 떨어지지 않은 기간은 몇 초인지를 return 하도록 solution 함수를 완성하세요.
제한사항
vector<int> solution(vector<int> prices) {
vector<int> answer;
for (int i = 0; i < prices.size(); i++) {
int cnt = 0;
for (int j = i + 1; j < prices.size(); j++) {
cnt++;
if (prices[i] > prices[j]){
break;
}
}
answer.push_back(cnt);
}
return answer;
}
프로그래머스는 문제 설명에 좀 더 신경을 쓸 필요가 있다고 생각한다. 매 번 문제 지문이 모호해서 <질문하기>에 들어가면 나같은 사람들이 수두룩하다는 것을 알 수 있기 때문이다.
이 문제는 스택/큐 카테고리에 분류되어 있는데 굳이 스택/큐를 써야되는지는 모르겠다. 문제 접근은 이중 for
를 돌면서 현재 원소보다 작은 숫자가 나오면(= 주식 가격이 떨어졌음을 의미) break
해준다. 그 외의 경우는 계속 cnt++
해주고 그 값을 answer
에 푸시한다. 이 과정을 반복하면 어느새 for
문은 끝이 난다! ㅎㅎ
코딩보다 문제 파악에 더 오랜 시간이 걸린 문제였다.