[programmers] 숫자 블록

https://school.programmers.co.kr/learn/courses/30/lessons/12923

import java.util.*;

class Solution {
    public int[] solution(long begin, long end) {
        int[] answer = new int[(int)(end-begin) + 1];

        for(long i=begin; i<=end; i++){
            answer[(int)(i-begin)] = (int)maxDivisor(i);
        }
        return answer;

    }

    public static long maxDivisor(long num){
        int result = 1;

        if(num == 1) return 0;

        for(int i=2; i<=Math.sqrt(num); i++){
            if(num % i == 0){
                if(num / i <= 10000000){ // 문제의 조건 '1부터 10,000,000까지의 숫자'
                    return num / i;
                }else{
                    result = i; // 조건이 넘어갈 경우 가장 큰 약수를 추출한다(i 는 Math.sqrt(num)으로 최대 31,622
                }
            }
        }
        return result;
    }
}


© 2023 Lee. All rights reserved.