알고리즘/백준

[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에 대한 아이디어를 얻었다.

 

오큰수를 찾지 못한 인덱스들을 스택에 보관하여 주어지는 수열의 원소들을 조회하며 비교하는 것이 핵심이다..!