문제 설명
해결과정
Solution.java
import java.util.*;
class Solution {
public String solution(String number, int k) {
String answer = "";
int start = 0;
StringBuilder sb = new StringBuilder(number);
int end = number.length() - k;
while(0 < k) {
// 가장 큰 문자의 인덱스를 저장할 변수
int maxIndex = findBigCharIndex(start, k, sb);
char max = sb.charAt(maxIndex);
while(sb.charAt(start) != max && 1 != sb.length()) {
sb.delete(start,start+1);
k--;
}
start++;
if(start == end) {
return sb.substring(0, start);
}
}
return sb.toString();
}
public int findBigCharIndex(int start, int k, StringBuilder sb) {
// 가장 큰 문자를 저장할 변수
char max = ' ';
// 가장 큰 문자의 인덱스를 저장할 변수
int maxIndex = 0;
int end = (start + k) <= (sb.length()-1) ? (start + k) : (sb.length()-1);
// 0부터 K까지의 문자들중 가장 큰 문자와 인덱스 탐색
for(int i = start; i <= end; i++) {
// 현재 탐색중인 문자가 이전에 탐색한 문자보다 크다면
if(max < sb.charAt(i)) {
// 이전에 탐색한 문자를 현재 탐색중인 문자로
max = sb.charAt(i);
// 이전에 탐색한 인덱스를 현재 탐색중인 인덱스로
maxIndex = i;
// 변경
}
}
return maxIndex;
}
}
Java
복사