어흥
[프로그래머스] 주식가격 (C++) 본문
728x90
반응형
문제 링크: https://programmers.co.kr/learn/courses/30/lessons/42584?language=cpp
1. 주의할 점
- Stack을 이용하여 해결한다
2. 구현
- Stack에 Prices의 인덱스를 담는 방식으로 진행한다
- Stack의 Top의 원소에 해당하는 Prices보다 현재 Prices(val)가 크거나 같으면 Stack에 추가한다
- 아니라면 Stack의 원소를 뽑아내여 Arr[] 배열에 주식이 내려가지 않은 기간을 저장한다
- For문이 끝나더라도 Stack에 원소가 남아있을 수 있으니, Stack의 전체가 빌때까지 모든 원소를 뽑아내어 Arr[] 배열을 채운다
#include <string>
#include <vector>
#include <stack>
using namespace std;
int arr[100000];
vector<int> solution(vector<int> prices) {
vector<int> answer;
int len = prices.size()-1;
stack<int> s;
for(int i=0;i<=len;i++){
int val = prices[i];
while(!s.empty()){
int cidx = s.top();
int cv = prices[cidx];
if(cv<=val) break;
else{
arr[cidx] = i-cidx;
s.pop();
}
}
s.push(i);
}
while(!s.empty()){
int cidx = s.top();
s.pop();
arr[cidx]=len-cidx;
}
for(int i=0;i<=len;i++)
answer.push_back(arr[i]);
return answer;
}
728x90
반응형
'알고리즘 > 프로그래머스' 카테고리의 다른 글
[프로그래머스] 등굣길 (C++) (0) | 2022.01.09 |
---|---|
[프로그래머스] 짝지어 제거하기 (C++) (0) | 2022.01.07 |
[프로그래머스] 단속카메라 (C++, Java) (2) | 2022.01.03 |
[프로그래머스] 폰켓몬 (C++, Java) (0) | 2022.01.02 |
[프로그래머스] 멀쩡한 사각형 (C++) (0) | 2021.12.07 |
Comments