https://school.programmers.co.kr/learn/courses/30/lessons/154539
스택을 이용해서 해결하였습니다.
#include <string>
#include <vector>
#include <stack>
#include <algorithm>
using namespace std;
vector<int> solution(vector<int> numbers) {
vector<int> answer;
stack<int> st;
for(int i = numbers.size()-1;i>=0;i--){
if(st.empty()){
answer.push_back(-1);
st.push(numbers[i]);
}
else{
bool isValid = false;
while(!st.empty()){
if(st.top() > numbers[i]){
answer.push_back(st.top());
st.push(numbers[i]);
isValid = true;
break;
}
st.pop();
}
if(st.size() == 0){
st.push(numbers[i]);
answer.push_back(-1);
}
}
}
reverse(answer.begin(),answer.end());
return answer;
}
'알고리즘' 카테고리의 다른 글
이분 그래프와 판별법 (2) | 2023.03.15 |
---|---|
프로그래머스 덧칠하기 C++ (0) | 2023.03.03 |
프로그래머스 튜플 C++ (0) | 2023.01.29 |
프로그래머스 뉴스 클러스터링 C++ (0) | 2023.01.16 |
프로그래머스 키패드 누르기 C++ (0) | 2023.01.05 |