문제
https://school.programmers.co.kr/learn/courses/30/lessons/42584
접근방법
스택으로 구현하려고 생각해봤는데,
도저히 방법이 떠오르지 않아서 GPT에게 물어봤다.
stack에다가 원소를 넣는 방법만 생각했던 게 패인이었다.
stack에 index를 넣는 방법을 사용하면,
그 인덱스를 가지고 price배열에도 접근할 수 있고,
answer배열에 그 인덱스에 맞는 위치에 원하는 값을 넣을 수 있다.
코드
#include <vector>
#include <stack>
using namespace std;
vector<int> solution(vector<int> prices) {
vector<int> answer(prices.size());
stack<int> st;
for (int i=0;i<prices.size();i++) {
while(!st.empty() && prices[i] < prices[st.top()]) {
answer[st.top()] = i - st.top();
st.pop();
}
st.push(i);
}
while(!st.empty()) {
answer[st.top()] = prices.size() - st.top() - 1;
st.pop();
}
return answer;
}
개선할 점
stack에 index 값을 넣어서 푸는 유형은 생소했다.
앞으로 기억해두면 많은 도움이 될 거 같다.
'코딩테스트 준비 > 프로그래머스' 카테고리의 다른 글
[프로그래머스 LV3] - 디스크 컨트롤러(minheap) c++ (0) | 2024.02.20 |
---|---|
[프로그래머스 LV2] - 더 맵게(minheap) c++ (0) | 2024.02.20 |
[프로그래머스 LV2] - 다리를 지나는 트럭(스택/큐) c++ (1) | 2024.02.15 |
[프로그래머스] - 프로세스(스택/큐) c++ (0) | 2024.02.15 |
[프로그래머스] - H-index(정렬) c++ (0) | 2024.02.15 |