📖 오늘의 학습 키워드
그리디
[Monotone Increasing Digits]
https://leetcode.com/problems/monotone-increasing-digits/description/
class Solution {
public int monotoneIncreasingDigits(int n) {
char[] digits = String.valueOf(n).toCharArray();
int len = digits.length;
int i = 1;
while(i < len && digits[i - 1] <= digits[i]) {
i++;
}
if (i < len) {
while(i > 0 && digits[i - 1] > digits[i]) {
digits[i - 1]--;
i--;
}
i++;
while(i < len) {
digits[i] = '9';
i++;
}
}
return Integer.parseInt(new String(digits));
}
}
n의 모든 자릿수로 이루어진 char 배열 digits를 생성한다.len은 digits의 길이다.i를 1로 초기화한다.i가 len보다 작고 digits[i - 1]가 digits[i]보다 작거나 같을 때까지 i를 하나씩 늘린다.i가 len과 같다면 현재 n에서 각 자릿수의 숫자는 점진적으로 증가한다. 그러므로 digits 배열을 수정하지 않고 그대로 정수로 변환해 반환한다.i가 len보다 작으면 i가 0보다 크고 digits[i - 1]가 digits[i]보다 클 때까지 digits[i - 1]값을 하나 줄이고 i를 하나씩 줄인다.i 값을 하나 늘리고 i가 len보다 작을 때까지 digits[i] 값을 '9'로 바꾸고 i를 하나씩 늘린다.digits 배열을 정수로 변환해 반환한다.