하루하루 꾸준히, 인생은 되는대로

알고리즘

프로그래머스 뒤에 있는 큰 수 찾기 C++

긤효중 2023. 1. 31. 01:59

https://school.programmers.co.kr/learn/courses/30/lessons/154539

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

스택을 이용해서 해결하였습니다.

#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;
}