[programmers] 숫자 블록
in Algorithm on Algorithm
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;
}
}