큰 수 만들기(프로그래머스)

정승옥(seungok)·2020년 12월 30일
0

프로그래머스

목록 보기
30/40
post-thumbnail

문제설명

  • 어떤 숫자에서 k개의 숫를 제거하여 가장 큰 숫자를 구하기
  • 숫자 1924에서 수 두개를 제거하면 [19, 12, 14, 92, 94, 24]를 만들 수 있고 이중 가장 큰 수는 94
  • 문자열 형식 숫자 number와 제거할 수의 개수 k
  • number에서 k 개의 수를 제거했을 때 가장 큰 숫자를 문자열 형태로 반환

제한조건

  • number는 1자리 이상 1,000,000자리 이하인 숫자
  • k는 1이상 number의 자릿수 미만인 자연수

풀이

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('');
}

체크포인트

  • 탐욕법(Greedy) 공부하기
  • 숫자가 모두 같은 경우 k가 감소하지 않음!!
profile
Front-End Developer 😁

0개의 댓글