[LeetCode] 240202 Sequential Digits

김동연·2024년 2월 2일

알고리즘

목록 보기
9/12

문제

Sequential Digits

요약

어려운 문제는 아니다. 그냥 구현 문제이다. 최소값 최대값사이에 자릿수별로 연속된 숫자들을 찾으면 된다.

과정

  1. 최솟값과 최댓값의 자릿수를 찾는다 (log10 이용)
  2. 최솟값 자리수 ~ 최댓값 자릿수까지 자릿수 반복
    2.2 1부터 해당 자릿수에서 표현할 수 있는 모든 연속된 숫자 생성
    2.3 해당 숫자가 low와 high 범위 안에 있을 경우 답에 입력

순서도

오늘은 이지 하니까 패스

코드

import java.util.*;

class Solution {
    public List<Integer> sequentialDigits(final int low, final int high) {

        final List<Integer> answer = new ArrayList<>();
        final int lowMode = (int) Math.log10(low) + 1;
        final int highMode = (int) Math.log10(high) + 1;

        for (int i = lowMode ; i <= highMode ; i ++){
            for (int j = 1 ; j < 10 - i + 1; j ++){
                String value = "";
                for (int k = j ; k < j + i ; k++){
                    if (k >= 10){
                        break;
                    }
                    value += "" + k;
                }
                final int intValue = Integer.parseInt(value);
                if (intValue >= low && intValue <= high){
                    answer.add(intValue);
                }
            }
        }
        return answer;
    }
}

0개의 댓글