[프로그래머스] Lv2. 뒤에 있는 큰 수 찾기 - JavaScript

이상돈·2023년 3월 10일
0
post-thumbnail

문제분류 : 코팅테스트 연습

난이도 : Level 2

출처 : 프로그래머스 - 뒤에 있는 큰 수 찾기

문제

제한사항

📌 내가 생각한 풀이

인덱스를 저장할 스택을 따로 설정해주고, numbers를 돌면서, stack의 마지막 원소의 인덱스에 해당하는 numbers의 값을 data와 비교한다. data보다 값이 작으면, numbers[stack.pop한 인덱스]의 값을 data로 바꿔주면 된다.
function solution(numbers) {
    var answer = new Array(numbers.length).fill(-1)
    var stack = [];
    numbers.map((data,idx)=>{
        while(stack && numbers[stack.at(-1)] < data){
            answer[stack.pop()] = data;
        }
        stack.push(idx);
    })
    return answer;
    
}

📌 느낀점

알고리즘 자체는 쉽고, 시간복잡도와의 싸움이다. O(n)도 시간 초과가 뜨는데, 어떻게 전체를 다 돌지않고, 큰 수를 찾을 수 있을까? 가 최대 의문점이였다. stack을 이용하여, 해쉬테이블을 작성하면 훨씬 빠른 속도로 해결할 수 있음을 알게되었다.

profile
사람들의 더 나은 삶을 위한 개발자

0개의 댓글