호지

[프로그래머스] 뒤에 있는 큰 수 찾기 문제풀이 JS 본문

알고리즘/프로그래머스

[프로그래머스] 뒤에 있는 큰 수 찾기 문제풀이 JS

_hoji

스택을 이용하면 되는 문제이다.

초기값으로 stack에는 0번 index를 저장하고

1번째 index부터 마지막 원소까지 순회를 하면서

stack이 비어있지 않은데, stack에 top인 index의 원소가 현재 원소보다 작다면

stack의 원소를 pop하고 해당 index의 answer를 현재의 numbers로 저장하는 것을 반복한다.

그 후 현재의 index에 대한 큰 수 찾기도 진행되어야 하므로,

현재의 index를 stack에 push한다.

마지막으로 stack에 남아 있는 index들은 큰 수 찾기에 실패한 경우이므로,

해당 index의 answer은 -1로 업데이트 한다.

function solution(numbers) {
  let answer = []
  let stack = [0]
  for (let i = 1; i < numbers.length; i++) {
    while (stack.length !== 0 && numbers[stack[stack.length - 1]] < numbers[i]) {
      answer[stack.pop()] = numbers[i]
    }
    stack.push(i)
  }
  for (let i = 0; i < stack.length; i++) answer[stack[i]] = -1
  return answer
}

https://school.programmers.co.kr/learn/courses/30/lessons/154539#

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

Comments