문제
https://school.programmers.co.kr/learn/courses/30/lessons/42883
접근 방법 및 풀이
k개를 제거 하여 가장 큰 수를 만들어야 한다면 number 문자열의 0번째에서 k번째 사이의 가장 큰 수의 앞 문자열을 제거
가장 큰 숫자가 여러개 있는 경우에는 index가 가장 0에 가까운 자리의 앞 문자열을 제거
제거한 문자열의 길이 만큼 k에서 차감
k가 0이 될 때까지 진행
public class Q30_42883 {
public String solution(String number, int k) {
StringBuilder sb = new StringBuilder();
while (k > 0) {
int length = number.length();
if (length == k) {
number = "";
break;
}
int maxIndex = this.getMaxIndex(number, k);
sb.append(number.charAt(maxIndex));
number = number.substring(maxIndex + 1, length);
k -= maxIndex;
}
sb.append(number);
return sb.toString();
}
/**
* 0 ~ scopeIndex 사이의 숫자중 가장 큰 숫자의 index를 반환
*/
public int getMaxIndex(String number, int scopeIndex) {
char temp = ' ';
int result = -1;
for (int i = 0; i <= scopeIndex; i++) {
char target = number.charAt(i);
if (temp == ' ' || temp < target) {
temp = target;
result = i;
}
}
return result;
}
}