https://programmers.co.kr/learn/courses/30/lessons/42883
- 주어진 k가 2이고, number의 길이는 7일 때, 5(7 - 2)자리의 최대값을 만들어야 한다.
※주의 사항!!
-주어진 number로 최대값 만들 때 digit들의 순서는 바뀔 수 없다.- 그렇다면, 정해놓은 범위에서 number digit중에 최대값을 구하는 과정을 거쳐야함.
- 포문의 범위는 우리가 만약에 구해야하는 자릿수의 값이 5라면, [0,1,2] index중에 최대값을 가지고 있는 index가 무엇인지 구한다.
※이렇게 안하고 전 index범위에서 위 과정을 거치면, 만약 가장 마지막 index의 value가 제일 큰 값일 때, 뒤에 오는 값이 없어서 5자리 값을 만들 수 없기 때문- 구한 index를 포문의 시작 값으로 정하고 이제 남은 자릿수가 몇자리인지 계산하고 남은 자릿수는 남기기위해 포문의 종료값을 (number.length - 남은 자릿수)로 설정해준다.
- 위 과정을 구해야하는 자릿수만큼 반복해준다.
function solution(number, k) {
var answer = '';
var max = 0, remember = 0;
var t = number.length - k;
var number2 = number.split('');
var remember = 0;
while(k != number.length){
max = 0;
if(t >= 1) t = t - 1;
for(var i = remember; i < number2.length - t; i++){
if(number2[i] == 9){
max = number2[i];
remember = i;
break;
}
if(max < number2[i]){
max = number2[i];
remember = i;
}
}
remember++;
answer = answer + max;
k++;
}
return answer;
}
function solution(number, k) { /** 테스트 10번 시간초과 문제 해결 못함 */
var answer = '';
var max = 0, remember = 0;
var t = number.length - k;
var number2 = number.split('');
var remember = 0;
while(k != number.length){
max = 0;
if(t >= 1) t = t - 1;
for(var i = remember; i < number2.length - t; i++){
if(max < number2[i]){
max = number2[i];
remember = i;
}
}
remember++;
answer = answer + max;
k++;
}
return answer;
}
오답코드까지!! ☜(゚ヮ゚☜) 정말 멋져요 : )