class Solution {
public String solution(String number, int k) {
StringBuilder sb = new StringBuilder();
int length = number.length();
int[] intArr = new int[length];
//한 cycle에서의 최댓값의 index, 다음 loop 때 index+1부터 탐색
//index+1부터 시작하니까 0부터 시작하기 위해 -1로 초기화
int index = -1;
/한 cycle에서의 최댓값 저장
int max = -1;
//string -> int[] 변환
for(int i=0; i<length; i++) {
intArr[i] = number.charAt(i)-'0';
}//for end
//앞에서부터 해당 구간에 가장 큰 수 골라내는 과정(length-k번 cycle)
for(int n=1; n<=length-k; n++) {
//앞서 index위치 값이 사용됐으니 그 다음인 index+1부터 탐색
//n번째 수 정하는 loop -> (length-k)-n개의 수 안 정해짐, 최소 이 개수만큼은 뒤에서 보장
//-> length-(length-k-n) index 이전까지만 탐색! ->(k+n) index 이전까지 탐색
for(int i=index+1; i<k+n; i++) {
if(max<intArr[i]) {
max = intArr[i];
index = i;
}//if end
if(max==9) break; //최대값이므로 더 이상 진행x
}//for end
sb.append(max);
max = -1;
}//for end
return sb.toString();
}
}
**
char형 <-> int형 변형
다른 풀이) stack을 활용한 방법
'자료구조 & 알고리즘 > 문제풀이' 카테고리의 다른 글
최댓값과 최솟값 - 프로그래머스 (Java, Level 2) (0) | 2022.02.21 |
---|---|
구명보트 - 프로그래머스 (Java, level 2) (0) | 2022.02.18 |
체육복 - 프로그래머스 (Java, Level 2) (0) | 2022.02.18 |
카펫 - 프로그래머스 (Java, Level 2) (0) | 2022.02.10 |
가장 큰 수 - 프로그래머스 (Java, Level 2) (0) | 2022.02.09 |
댓글