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

잡초·2024년 1월 28일
0
post-thumbnail

문제

풀이

function solution(numbers) {
    var answer = [];
    
    for (let i = 0; i < numbers.length - 1; i++) {
        let found = false;

        for (let j = i + 1; j < numbers.length; j++) {
            if (numbers[i] < numbers[j]) {
                answer.push(numbers[j]);
                found = true;
                break;
            }
        }

        if (!found) {
            answer.push(-1);
        }
    }

    answer.push(-1);

    return answer;
}

문제는 해결됐지만, 일부 시간초과가 되었다.

function solution(numbers) {
    // 결과 배열을 생성하고 -1로 초기화.
    const result = new Array(numbers.length).fill(-1);
    // 인덱스를 저장하는 스택을 생성.
    const stack = [];

    for (let i = 0; i < numbers.length; i++) {
        // 스택이 비어있지 않고 현재 숫자가 스택의 가장 위의 숫자보다 큰 경우
        while (numbers[i] > numbers[stack.at(-1)]) {
            // 스택에서 가장 위의 인덱스를 꺼내어 해당 인덱스의 결과 배열 값을 업데이트.
            const index = stack.pop();
            result[index] = numbers[i];
        }

        // 현재 인덱스를 스택에 추가.
        stack.push(i);
    }

    return result;
}

다른 사람의 풀이를 참고했다.

profile
개발자가 되고싶은 잡초

0개의 댓글