大数の作成(プログラマ)


問題の説明

  • ある数字からk個の数字を除いて最大の数字
  • を求める.
  • 数字1924から2つの数字を削除すると[19,12,14,14,92,94,24]が生成され、そのうち最大数は94
  • である.
  • 文字列フォーマット数字番号と削除する番号k
  • 号からk個の数字を削除すると、返される最大数字は文字列
  • である.

    せいげんじょうけん

  • は1つの数字で、100000を超えない数字で、
  • です.
  • kは1桁未満の自然数
  • である.

    に答える

    function solution(number, k) {
        // 숫자를 담을 배열 stack 
        const stack = [];
        
        // 숫자를 하나씩 꺼내 stack에 담는데
        // stack에 넣은 마지막 숫자와 el를 비교
        // el가 크다면 마지막 숫자를 꺼내고 k값 1 감소
        // k가 0이 되면 k개의 숫자를 제거했음을 의미
        for(let i=0;i<number.length;i++){
            const el = number[i];
            
            while(k>0 && stack[stack.length-1]<el){
                stack.pop();
                --k;
            }
            
            stack.push(el);
        }
        // k>0인 경우 stack의 끝에서 k개만큼 제거
        stack.splice(stack.length-k,k);
        return stack.join('');
    }

    チェックポイント


    勉強
  • 貪欲法
  • の数字が同じなら、kは減らない!!