코딩테스트(알고리즘)/baekjoon
[baekjoon] 17298 오큰수 (Javascript)
Cafe Mocha
2023. 1. 28. 23:31
https://www.acmicpc.net/problem/17298
17298번: 오큰수
첫째 줄에 수열 A의 크기 N (1 ≤ N ≤ 1,000,000)이 주어진다. 둘째 줄에 수열 A의 원소 A1, A2, ..., AN (1 ≤ Ai ≤ 1,000,000)이 주어진다.
www.acmicpc.net
알고리즘 : 구현
그냥 문제를 풀면 시간초과와 메모리 초과가 발생해 stack을 활용해서 풀었다.
let input = require("fs")
.readFileSync("input.txt") //"/dev/stdin"
.toString()
.split("\n")
.map((val) => val.trim());
let n = +input.shift();
let nums = input.shift().split(" ").map(v=>+v);
function solution() {
let ans = [];
let stk = [];
for(let i=n-1;i>=0;i--){
if(!stk.length) {
stk.push(nums[i]);
ans.push(-1);
continue;
}
while (stk.at(-1) <= nums[i]) {
stk.pop();
}
if (!stk.length) {
ans.push(-1);
stk.push(nums[i]);
} else {
ans.push(stk.at(-1));
stk.push(nums[i]);
}
}
console.log(ans.reverse().join(" "));
}
solution();