알고리즘/프로그래머스

억억단을 외우자 ******

베리영young 2024. 7. 31. 08:40

문제가 이해가 안 갔던 문제........

 

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;
    }
}

'알고리즘 > 프로그래머스' 카테고리의 다른 글

이모티콘 할인행사  (0) 2024.08.20
호텔 대실  (0) 2024.08.19
혼자서 하는 틱택토  (1) 2024.07.27
숫자 변환하기  (0) 2024.07.25
석유 시추  (0) 2024.07.18