[JS] 뒤에 있는 큰 수 찾기

DARTZ·2023년 6월 16일
0

알고리즘

목록 보기
121/135
function solution(numbers) {
    const results = Array(numbers.length).fill(-1);
    const stack = [];
    
    for (let i = 0; i < numbers.length; i++) {
        while (stack.length !== 0 && numbers[i] > numbers[stack.at(-1)]) {
            results[stack.pop()] = numbers[i];
        }
        stack.push(i);
    };
    
    return results;
}

Stack을 이용한 풀이입니다. 문제를 해결하는 아이디어는 다음과 같습니다.

  • -1로 초기화 된 배열을 만들어줍니다.
  • numbers를 순회하면서 각 index를 stack에 push 해줍니다.
  • 만약의 stack의 마지막 값 인덱스를 가진 numbers의 값이 현재 값보다 작을 경우 pop을 해주고 현재 값으로 바꿔줍니다.

참고해서 해결한 풀이인데 아이디어를 다른 문제에도 적용할 수 있을 것 같다라는 생각이 듭니다.

profile
사람들이 비용을 지불하고 사용할 만큼 가치를 주는 서비스를 만들고 싶습니다.

0개의 댓글