본문 바로가기

알고리즘구현능력/문제해결능력

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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
function solution(number, k) {
    let StNum = String(number);
    let num_length = StNum.length;
    let stack = [];
    let count = 0;
    
    for(let i=0;i<num_length;i++){
       let element = number[i];
        if(stack.length===0){
           stack.push(element);
           continue;
        }
        //stack의 쌓인 최근 값이 들어와야할 값보다 크거나 같을떄까지 꺼낸다..
        while(stack[stack.length-1< element){
            stack.pop();
            count++; // 만약 뺴는갯수 카운팅
            //다 뻇다면 남은 자릿수를 다 꺼낸다.
            if(count === k) {
                return stack.join("")+number.substring(i,num_length);
            }
            //스택이 비어있으면 나간다.
            if(stack.length === 0 ){
                break;
            }
            
        }
        stack.push(element);
    }
    return stack.join("").substring(0,num_length-k);
}
cs