본문 바로가기
코테연습

195. 뒤에 있는 큰 수 찾기 Javascript

by hxunz 2023. 3. 24.

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

 

프로그래머스

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

programmers.co.kr

 

/**
* ## 이해
*
* 미지의 것: 모든 원소에 대한 뒷 큰수들을 차례로 담은 배열을 return
* 자료
*   - 정수로 이루어진 배열 numbers
    - 배열 의 각 원소들에 대해 자신보다 뒤에 있는 숫자 중에서 자신보다 크면서 가장 가까이 있는 수를 뒷 큰수라고 합니다.
    - 뒷 큰수가 존재하지 않는 원소는 -1을 담습니다.
* 조건
*   -
*
* ## 계획
*   -
*
* ## 실행
*
* ## 반성
*
*/

const solution = (numbers) => {
  const answer = new Array(numbers.length).fill(-1);
  const stack = [];

  for (let i = 0; i < numbers.length; i++) {
    //stack이 비어져있지 않고 현재 숫자보다 작은 숫자가 있는 경우 반복한다.
    while (stack.length && numbers[stack[stack.length - 1]] < numbers[i]) {
      //스택에서 인덱스를 하나씩 꺼내서 해당 인덱스의 값을 numbers[i]로 바꿔서 뒤에 있는 큰 수를 찾는다.
      answer[stack.pop()] = numbers[i];
      //이를 반복하면서 스택에 남아있는 인덱스들에 대해서도 뒤에 있는 큰 수를 찾아낸다. 
    }
    stack.push(i);
  }
  return answer;
};

test('solution', () => {
  expect(solution([2, 3, 3, 5])).toEqual([3, 5, 5, -1])
});

'코테연습' 카테고리의 다른 글

197. 멀쩡한 사각형 Javascript  (0) 2023.03.29
196. 점 찍기 Javascript  (0) 2023.03.29
194. 다리를 지나는 트럭 Javascript  (0) 2023.03.23
193. 파일명 정렬 Javascript  (0) 2023.03.22
192. 땅따먹기 Javascript  (0) 2023.03.20

댓글