문제

코드
Stack Overflow 코드
import java.util.*;
class Solution {
private List<Integer> result;
private int num[];
public void makeMaxNum(int startIdx, int endIdx){
if(endIdx == num.length){
return;
}
int max = -1;
int idx = 0;
for(int i = startIdx; i <= endIdx; i++){
if(max < num[i]){
idx = i;
max = num[i];
}
}
result.add(max);
makeMaxNum(idx + 1, endIdx + 1);
}
public String solution(String number, int k) {
result = new ArrayList<Integer>();
num = new int[number.length()];
for(int i = 0; i < number.length(); i++){
num[i] = Integer.parseInt(number.substring(i, i + 1));
}
makeMaxNum(0, k);
String answer = "";
for(int i = 0; i < result.size(); i++){
answer += result.get(i);
}
return answer;
}
}
성공 코드
import java.util.*;
class Solution {
private List<Integer> result;
private int num[];
public String solution(String number, int k) {
result = new ArrayList<Integer>();
num = new int[number.length()];
for(int i = 0; i < number.length(); i++){
num[i] = Integer.parseInt(number.substring(i, i + 1));
}
int startIdx = 0;
int endIdx = k;
while(endIdx != num.length) {
int idx = 0;
int max = -1;
for (int i = startIdx; i <= endIdx; i++) {
if (num[i] == 9) {
idx = i;
max = num[i];
break;
}
if (max < num[i]) {
idx = i;
max = num[i];
}
}
result.add(max);
startIdx = idx + 1;
endIdx += 1;
}
String answer = "";
for(int i = 0; i < result.size(); i++){
answer += result.get(i);
}
return answer;
}
}