programmers.co.kr/learn/courses/30/lessons/42584?language=c
이번 문제는 스택(stack) 문제였습니다.
📝 문제 풀이
1. 주식 가격이 떨어졌는지 확인하기 위한 스택 s를 선언
2. 주식 가격이 떨어졌다면, 현재까지의 시간 - 주식가격이 기록된 시간을 해당 시점에 저장 ⭐️
3. while 문이 종료될 때마다 초(인덱스)를 s에 삽입
4. 마지막 시점까지 가격이 떨어지지 않은 주식 가격의 경우, prices.size( ) - 1 - 주식가격이 기록된 시간을 해당 시점에 저장
👩🏻💻 C++ 코드
#include <string>
#include <vector>
#include <stack>
using namespace std;
vector<int> solution(vector<int> prices) {
int size = prices.size();
vector<int> answer(size);
stack<int> s;
for (int i=0; i<size; i++) {
while (!s.empty() && prices[i] < prices[s.top()]) {
answer[s.top()] = i - s.top(); // 주식 가격이 떨어지지 않은 기간
s.pop();
}
s.push(i);
}
// 마지막까지 가격이 떨어지지 않은 주식 가격
while (!s.empty()) {
answer[s.top()] = (size - 1) - s.top();
s.pop();
}
return answer;
}
반응형
'알고리즘 > 프로그래머스' 카테고리의 다른 글
[프로그래머스] 문자열 압축 (0) | 2022.02.12 |
---|---|
[프로그래머스] 기능개발 (0) | 2022.02.11 |
[프로그래머스] 가장 큰 수 (0) | 2022.02.10 |
[프로그래머스] 타겟 넘버 JavaScript (Lv.2) (0) | 2022.02.09 |
[프로그래머스] 등굣길 (0) | 2021.04.15 |