Notice
Recent Posts
Recent Comments
Link
«   2025/04   »
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
Tags more
Archives
Today
Total
관리 메뉴

개발의변화

프로그래머스 LV2 큰 수 만들기 본문

알고리즘

프로그래머스 LV2 큰 수 만들기

refindmySapporo 2023. 4. 13. 19:51
반응형

문제

https://school.programmers.co.kr/learn/courses/30/lessons/42883#qna

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

해설

function solution(number, k) {
    let stack = [];

    let arr = number.split('').reverse();
     //1924 ->> 4291 
    while(arr.length && k>0){
        stack.push(arr.pop())  //4 3 2 3
        while(stack[stack.length-1] < arr[arr.length-1] && k>0) {
            stack.pop();
            k = k-1;
        }
    }

    if(k !== 0) stack = stack.slice(0, -k) 

    return stack.join('') + arr.reverse().join('')
}

처음 이 문제를 봤을 때 백트래킹 혹은 순열을 활용해서 구할려고 했으나 O(n**2)의 시간이 걸려 시간초과가 계속 났다.

스택을 활용해서 반대로 배열을 돌린다음 그 배열이 하향 곡선일 때는 계속 스택에 넣고 번쩍 상향 곡선이 그려진다면 스택에 맨 끝을 버리게 한다

반응형