개발 낙서장

[프로그래머스][Java][효율성] 기사단원의 무기 본문

Algorithm/Programmers

[프로그래머스][Java][효율성] 기사단원의 무기

권승준 2024. 1. 12. 20:22

기사단원의 무기

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

 

프로그래머스

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

programmers.co.kr

풀이 방법

약수를 구하는 알고리즘이 있다. 글을 봤는데 잘 이해가 가지 않아서 다시 한 번 봐야할 것 같다.https://chwan.tistory.com/entry/Java-%EC%95%BD%EC%88%98%EC%9D%98-%EA%B0%9C%EC%88%98-%EA%B5%AC%ED%95%98%EA%B8%B0

 

[Java] 약수의 개수 구하기

방법1 N의 약수 개수 구하는 방법을 생각했을 때 바로 떠오르는 방법은 N을 1부터 N까지의 숫자로 나눠 약수인지 판별하여 카운트를 해주는 방법이다. 코드로 구현해보면 아래와 같다. int N = 100000

chwan.tistory.com

해당 포스트를 참고했다.

소스 코드

더보기
import java.util.HashMap;
import java.util.Map;

class Solution {
    Map<Integer, Integer> divisorMap = new HashMap<>();

    public int solution(int number, int limit, int power) {
        int answer = 0;

        divisorMap.put(1, 1);
        
        for(int i = 1; i <= number; i++) {
            int divisor = getDivisor(i);
            
            if(divisor > limit)
                answer += power;
            else
                answer += divisor;
        }
        
        return answer;
    }
    
    public int getDivisor(int number) {
        int result = 0;

        for(int i = 1; i * i <= number; i++) {
            if(i * i == number) {
                result++;
            }
            else if(number % i == 0) {
                result += 2;
            }
        }

        return result;
    }
}
Comments