https://www.acmicpc.net/problem/17298
스택을 활용하는 문제였는데.. 그냥 무시하고 반복문으로 한번 풀어봤는데 시간초과가 떴다.
입력받은 숫자들을 순회하면서 스택의 top이 가리키는 숫자보다 크면 pop 해서 오큰수를 현재 숫자로 바꾼다.
const fs = require('fs');
const input = fs.readFileSync('/dev/stdin').toString().trim().split('\n');
n = input[0];
let numbers = input[1].split(' ');
numbers = numbers.map((x) => Number(x));
const stack = [];
for (let i = 0; i < numbers.length; i++) {
while (stack.length && numbers[stack[stack.length - 1]] < numbers[i]) {
numbers[stack.pop()] = numbers[i];
}
stack.push(i);
}
while (stack.length) {
numbers[stack.pop()] = -1;
}
console.log(numbers.join(' '));