큰 수 만들기

김현민·2021년 10월 14일
0

Algorithm

목록 보기
103/126
post-thumbnail

코드

function solution(number, k) {
  const nums = number.split("")
  let answer = ""

  let st = []

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

    while (k > 0 && st[st.length - 1] < element) {
      st.pop()
      k--
    }

    st.push(element)
  }
  st.splice(st.length - k, k)
  answer = st.join("").toString()
  return answer
}

// solution("1231234", 3)
solution("4177252841", 4)

시도(+생각)해본 것들

  1. 정렬해서 수를 구하기 ❌
    --> 숫자 위치들이 바뀌면 안된다.

  2. 포인터를 이용해서 구하기 ❌
    지우고 남은 (number.length - k ) 수가 2개면 할만 하겠지만, 3, 4개되면 관리해야 할 포인터가 너무 많아져 복잡하게 된다.

  3. 가능한 조합 구해서 가장 최댓값을 리턴하기 ❌
    number.length가 길어지면 길어질수록 조합의수는 엄청나게 증가해 시간초과가 발생

  4. 스택을 이용 ✅
    스택에 있는 맨위의 수가 넣으려는 수보다 작으면 계속 pop 크면 push

profile
Jr. FE Dev

0개의 댓글