문제가 이해가 안 갔던 문제........
s부터 e까지 수의 각 약수 중, 약수의 개수가 가장 많은 수를 구해라?
→ 만약 약수의 개수가 최대인 수가 여러 개이면, 가장 작은 수를 답으로
인 듯하다
사용 알고리즘: dp
사용 언어: java
import java.util.*;
class Solution {
public int[] solution(int e, int[] starts) {
int[] answer = new int[starts.length];
int[] 약수개수 = find약수개수(e);
int[][] store = new int[e+1][2];
store[e][0] = 약수개수[e];
store[e][1] = e;
for(int i=e-1; i>=1; i--) {
if(약수개수[i] < store[i+1][0]) {
store[i][0] = store[i+1][0];
store[i][1] = store[i+1][1];
} else {
store[i][0] = 약수개수[i];
store[i][1] = i;
}
}
for(int i=0; i<starts.length; i++) {
answer[i] = store[starts[i]][1];
}
return answer;
}
static int[] find약수개수(int e) {
int[] res = new int[e+1];
for(int i=1; i<=e; i++) {
for(int j=1; j<=e/i; j++) {
res[i*j]++;
}
}
return res;
}
}