[Algorithm] 프로그래머스 큰 수 만들기 - JS

문제

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

풀이

처음에는 number를 split 한 후 숫자를 조합해 그 중 가장 큰 숫자를 리턴하는 방법으로 하려 했으나… 조건이 1,000,000 자리 이하인 숫자인 것을 보고 포기,,! ^_ㅠ

결국 검색을 해서 스택을 이용하는 방법을 참고했다.

function solution(number, k) {
  const stack = [];

  for (let i = 0; i < number.length; i++) {
    const el = number[i];

    // k(제거해야 될 숫자 개수)가 아직 남아있고, stack에 들어있는 마지막 숫자가 현재 값(el) 보다 작다면 제거하고 현재값을 stack에 push
    while (k > 0 && stack[stack.length - 1] < el) {
      stack.pop();
      k--;
    }
    stack.push(el);
  }

  // k>0일 경우, stack 끝에 값만 없애주기
  stack.splice(stack.length - k, k);
  return stack.join("");
}

🔗 참고

  • https://taesung1993.tistory.com/46

Categories:

Updated:

Leave a comment