-
주식가격프로그래머스(Programmers) 2021. 12. 3. 01:17반응형
#include <string> #include <vector> #include <stack> using namespace std; vector<int> solution(vector<int> prices) { int size=prices.size(); stack<int> can; //stack에는 해당prices의 값이 들어가는 시간이 쌓인다. vector<int> arr(size); //몇초 지났는지 넣을 vector for(int i=0; i<prices.size(); i++) { while(!can.empty() && prices[can.top()] > prices[i]) // stack이 비어있지 않고 && 스택 맨위의 인덱스에 해당하는 prices의 가격 이 곧 들어올 prices보다 큰 경우 = 가격이 하락한 경우 { arr[can.top()] = i-can.top(); can.pop(); } can.push(i);// 하락한 경우가 아닐 경우, stack에 prices의 INDEX값 삽입 } while(!can.empty()) { arr[can.top()] =size - can.top() -1; can.pop(); } return arr; } int main() { vector<int> arr ={1,2,3,2,3}; solution(arr); return 0; }
=> stack을 사용하여야 시간 복잡도에 걸리지 않는 문제입니다.
=> 문제풀이는 주석을 보면 알 수 있습니다.
=> 저는 arr의 사이즈를 정해주지 않고 계속 대입하는 오류를 범하여 'core dumped' Error가 떴었습니다.
=> 해당 Error를 없애기 위해서는 미리 가장 최댓값인 10,000 크기의 vector를 생성하던지, prices.size() 크기만큼의 vector를 명시적으로 선언해주면 됩니다.
반응형'프로그래머스(Programmers)' 카테고리의 다른 글
루시와 엘라 찾기 (0) 2021.12.08 숫자 문자열과 영단어 (0) 2021.12.06 위장 (0) 2021.12.01 프린터 (0) 2021.11.28 가장 큰 수 (0) 2021.11.26