문제 풀이를 설명하기가 까다로워서 주석을 참고
class Solution {
public String solution(String number, int k) {
StringBuilder sb = new StringBuilder();
//문제
//k개를 제거하여, 만들 수있는 수중, 가장 큰 숫자
//조합이 아니라, 앞에서부터 순서대로 골라야함
//풀이
//만들어야 할 수에서, 앞자리 숫자부터 순서대로 n개를 뽑음(반복)
//시작Index ~ 마지막Index 중 최댓값을 뽑아서, String에 ++
//코드
//뽑을숫자 길이
int n = number.length() - k;
//가장 처음 시작Index
int start = 0;
for(int i = 0; i < n; i++){
//마지막Index 초기화
//ex) 1924에서 2자리 수를 뽑는 경우
//첫번째 자리수는 1,9,2 (startIndex ~ k+i(0) 번째) 중에서 선택해야 함
//두번째 자리수는 1,9,2,4 (startIndex ~ k+i(1) 번째) 중에서 선택해야 함
int end = k+i;
int max = 0;
//number의 시작Index ~ 마지막Index 중에서 최댓값 찾기
for(int j = start; j <= end; j++){
int nowN = number.charAt(j)-'0';
//더 큰 수를 찾을 때 마다
if(nowN > max){
//최댓값 갱신
max = nowN;
//다음 탐색 시의 시작Index를, 현재 숫자의 다음 위치로 초기화
//(뒤에 올 숫자는 현재 뽑은 숫자의 다음 index부터 뽑아야하므로)
start = j+1;
}
}
//탐색 완료 후 나온 최댓값을 현재 자리 숫자로 채택
sb.append(max);
}
return sb.toString();
}
}