https://www.acmicpc.net/problem/17298
const fs = require("fs");
const filePath = process.platform === "linux" ? "/dev/stdin" : "input.txt";
let input = fs.readFileSync(filePath).toString().trim().split("\n");
let n = Number(input[0]);
let arr = new Array(n);
arr = input[1].split(" ").map(Number);
let ans = new Array(n);
let stack = [];
for (let i = n - 1; i >= 0; i--) {
while (stack.length !== 0) {
let v = stack.pop();
if (v > arr[i]) {
ans[i] = v;
stack.push(v);
stack.push(arr[i]);
break;
}
}
if (stack.length === 0) {
ans[i] = -1;
stack.push(arr[i]);
}
}
console.log(ans.join(" "));
✔ 알고리즘 : 스택
✔ 배열의 뒤에서 부터 스택에 집어넣는다
✔ stack에 아무것도 없으면 ans에 -1 저장후 push
✔ stack의 top이랑 비교해서 큰값을 찾을때까지 pop 하여 ans에 v저장
✔ 큰것을 찾으면 push v 후 push arr[i]
✔ 난이도 : 백준 기준 골드 4