📖 오늘의 학습 키워드
그리디
[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
배열을 정수로 변환해 반환한다.