1.문제 설명
- 어떤 숫자에서 k개의 수를 제거 햇을 때 얻을 수 있는 가장 큰 숫자를 구하려 합니다.
예를 들어, 숫자 1924에서 수 2개를 제거하면 [19,1,2,14,92,94,24]를 만들 수 있습니다. 이중 가장 큰 숫자는 94입니다.
문자열 형식으로 숫자 number와 제거할 수의 개수 k가 solution 함수의 매개변수로 주어집니다.
number에서 k개의 수를 제거했을 때 만들 수 있는 수 중 가장 큰 숫자를 문자열 형태로 return하도록 solution 함수를 완성하세요.
2.제한조건
- number는 1자리 이상, 1,000,000이하인 숫자입니다.
- k는 1이상 number의 자릿수 미만인 자연수입니다.
number |
k |
return |
"1924" |
2 |
"94" |
"1231234" |
3 |
"3234" |
"4177252841" |
4 |
"775841" |
3.문제풀이
- 매개변수로 문자열과 숫자형 데이터가 들어옴
- 매개변수로 들어온 숫자만큼 숫자 제거
- 가장 큰수를 만든다
- 만약 매개변수로 "1924",2가 들어온다면
- 가장 큰숫자는 9가 되고 그게 리턴할 배열의 0번째 인덱스
- 2는 1감소하고
- 그다음 최댓값은 4가 되면 배열엔 [9,4]가 되며 문자열로 리턴
4.코드
function solution(number, k) {
let s = [];
[...number].forEach((num) => {
while (k > 0 && s[s.length - 1] < num) {
s.pop();
k--;
}
s.push(num);
});
s.splice(s.length - k, k);
return s.join("");
}