😎풀이

  1. stack 사용
  2. nums 순회
    2-1. 우리 목표는 가장 낮은 수가 가장 먼저 오도록 배치하는 것이므로, k번 내에서 앞쪽에 큰 수들을 최대한 제거
  3. 지워야 할 목표가 남은만큼 마저 요소 제거
  4. 제거된 요소 중 앞서오는 0을 모두 제거한 결과가 유효하다면 반환, 그렇지 못하다면 0 반환
function removeKdigits(num: string, k: number): string {
    const stack = []
    for(const digit of num) {
        while(stack.length > 0 && stack[stack.length - 1] > digit && k > 0) {
            stack.pop()
            k--
        }
        stack.push(digit)
    }
    while(stack.length > 0 && k > 0) {
      stack.pop()  
      k--
    }
    return stack.join('').replace(/^0+/, '') || '0'
};
profile
내 지식을 공유할 수 있는 대담함

0개의 댓글