Programmers - 큰 수 만들기

Doodream·2021년 3월 28일
0

코딩테스트

목록 보기
11/22
post-thumbnail

💻 큰 수 만들기


❓ 문제

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

✔️ 코드

function solution(number, k) {
    var stack = [];
    var answer = '';

    for (let i = 0; i < number.length; i++) {
        var max = number[i];
        while (k > 0 && stack[stack.length - 1] < max) {
            stack.pop();
            k--;
        }
        stack.push(max);
    }

    stack.splice(stack.length - k, k);
    answer = stack.join('');
    return answer;
}

var number = "4177252841";
var k = 4;
console.log(solution(number, k));

❗️풀이과정

stack을 이용해서 푼다. 처음에는 조합 문제인줄 알고 조합으로 접근했다가 시간초과 및 index 순서가 엉켰다.

이것도 간단한 문제이다.

  • stack에 number를 앞 부터 한문자씩 넣고 넣을 때마다 뒷문자가 stack에 들어있는 맨 마지막 문자보다 작다면 stack의 맨마지막 문자를 빼고 뒷문자를 넣는다.
  • 이때는 한개의 문자를 완전히 제거하는 경우이므로 (stack에 순서대로 넣어서 앞문자 보다 큰 수가 맨 앞으로 가게된다. 이후 앞문자보다 작은 숫자가 나오면 stack에 들어가지만 이역시 그 뒷문자가 더 크게 된다면 제거된다. )

즉, 앞문자 보다 큰 수이자 뒷문자가 보다 큰수가 stack에 남게된다.

배운점

  • stack의 개념을 이용할줄 알아야한다
profile
일상을 기록하는 삶을 사는 개발자 ✒️ #front_end 💻

0개의 댓글