알고리즘/백준
[boj 17298] 오큰수 - js
jinux127
2022. 3. 9. 14:33
// 오큰수
const filePath = process.platform === "linux" ? "/dev/stdin" : "input.txt";
const input = require('fs').readFileSync(filePath).toString().trim().split(/\s/).map(Number);
const size_A = input.shift();
const element_A = input;
const sol = (size_A,element_A) =>{
const result = new Array(size_A).fill(-1);
const stack =[];
for(let i =0; i<size_A; i++){
while(stack.length > 0 && element_A[stack[stack.length-1]] < element_A[i]){
result[stack.pop()] = input[i];
}
stack.push(i);
}
console.log(result.join(' '));
}
sol(size_A,element_A);
처음엔 반복문으로 해당 인덱스이상에 있는 값을 찾으려 반복하려 했지만 검색을 통해 stack에 대한 아이디어를 얻었다.
오큰수를 찾지 못한 인덱스들을 스택에 보관하여 주어지는 수열의 원소들을 조회하며 비교하는 것이 핵심이다..!