[99클럽 코테 스터디 32일차 TIL] 그리디

qk·2024년 6월 29일
0

회고

목록 보기
32/33
post-thumbnail

📖 오늘의 학습 키워드
그리디

오늘의 회고

문제

[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));
    }
}
  1. 정수 n의 모든 자릿수로 이루어진 char 배열 digits를 생성한다.
  2. lendigits의 길이다.
  3. i를 1로 초기화한다.
  4. ilen보다 작고 digits[i - 1]digits[i]보다 작거나 같을 때까지 i를 하나씩 늘린다.
  5. ilen과 같다면 현재 n에서 각 자릿수의 숫자는 점진적으로 증가한다. 그러므로 digits 배열을 수정하지 않고 그대로 정수로 변환해 반환한다.
  6. ilen보다 작으면 i0보다 크고 digits[i - 1]digits[i]보다 클 때까지 digits[i - 1]값을 하나 줄이고 i를 하나씩 줄인다.
  7. i 값을 하나 늘리고 ilen보다 작을 때까지 digits[i] 값을 '9'로 바꾸고 i를 하나씩 늘린다.
  8. digits 배열을 정수로 변환해 반환한다.

0개의 댓글