●문제

●입출력

문제풀이
numbers의 원소들이 뒷큰수를 return하는 result값을 도출
푼방법
뒤에서부터 검사하여 스택으로 품
#include <string>
#include <vector>
#include <stack>
using namespace std;
vector<int> solution(vector<int> numbers)
{
//자신보다 크면서 가장 가까이 있는 수 -> 뒷큰수
//[9, 1, 5, 3, 6, 2] -> [-1, 5, 6, 6, -1, -1]
vector<int> answer(numbers.size(), -1);
stack<int> stk;
stk.push(numbers[numbers.size() - 1]);
for (int i = numbers.size() - 2; i >= 0; i--)
{
bool bSuccess = false;
while (!stk.empty())
{
int top = stk.top();
stk.pop();
if (top > numbers[i])
{
answer[i] = top;
bSuccess = true;
break;
}
}
if (bSuccess)
stk.push(answer[i]);
stk.push(numbers[i]);
}
return answer;
}
레벨 : 2
점수 : 4
'C++ 프로그래머스 > Stack,Queue' 카테고리의 다른 글
| 프로그래머스(C++) - 괄호 회전하기 (0) | 2025.10.14 |
|---|---|
| 프로그래머스(C++) - 주식가격 (0) | 2025.10.08 |
| 프로그래머스(C++) - 프로세스 (0) | 2025.10.08 |
| 프로그래머스(C++) - 기능개발 (0) | 2025.08.07 |
| Algorithm - Stack, Queue (0) | 2025.08.07 |
