프로그래머스 - 큰 수 만들기 [ 못품 ]

Lumi·2021년 12월 2일
0

알고리즘

목록 보기
47/59
post-thumbnail

DFS를 통해서 모든 배열을 나열해 보려고 하였다.

  • 이전과 비슷하게

하지만 생각대로 되지 않아서 결국 풀지 못하고 다른분의 코드를 참고 하였다.

이 문제는 stack으로 해결 해야 한다고 한다.

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

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

    while (k > 0 && stack[stack.length - 1] < x) {
      stack.pop();
      k--;
    }

    stack.push(x);
  }

  stack.splice(stack.length - k, k);
  answer = stack.join("");
  return answer;
}

일단 stack에 담기전에 검사 부터 해야 한다.

  • 처음 값을 일단 담기게 된다.

그러면 그 다음값이 기존의 값보다 큰지를 확인한다.

크면 stack를 갱신하는 것이다.

이 과정은 k번 유지를 한다.

왜냐하면 가장 전체 배열에서 k번쨰를 제외한 값만 뺴내와야 하기 떄문이다.

이후 splice를 통해서 배열을 나누고 join을 통해서 합쳐준다.

k번 이 끝나면 나머지 값을 단순히 붙여주기만 하면 된다.

뭔가 풀수 있을듯 하면서 못풀었다... 너무 아쉽다

profile
[기술 블로그가 아닌 하루하루 기록용 블로그]

0개의 댓글