programmers_숫자 블록_java

2023. 5. 22. 20:00Algorithm/Programmers

728x90

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

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

import java.util.*;

class Solution {
    public int[] solution(long begin, long end) {
        int[] answer = {};

        List<Integer> list = new ArrayList<>();

        for (long i = begin; i<=end; i++){
            if (i == 1){
                list.add(0);
            }else {
                list.add((int)findMaxMod(i));
            }
        }

        answer = new int[list.size()];
        int idx = 0;
        for (int i : list){
            answer[idx++] = i;
        }

        return answer;
    }

    // 10000000 이하의 가장 큰 약수 구하기
    public long findMaxMod(long num){
        int tmp = 0;
        for (int i = 2; i<=Math.sqrt(num); i++){
            if (num%i == 0){
                if (num/i <= 10000000) {
                    return num / i;
                }
                tmp = i;
            }
        }
        if (tmp != 0){
            return tmp;
        }
        return 1;
    }
}