본문 바로가기
JAVA/프로그래머스

[Lv.1] 프로그래머스 - 기사단원의 무기 : Java

by ♡˖GYURI˖♡ 2024. 5. 10.
 

프로그래머스

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

programmers.co.kr

 

 

 

이해하기

처음에는 1부터 n까지 전부 돌며 약수의 개수를 구하는 count() 함수를 만들어서 풀이했는데, 시간초과로 실패했다.

항상 틀리고 나서 생각나는 에라토스테네스의 체...

적용해서 풀이했더니 바로 통과했다.

 

 

문제풀이

import java.util.*;

class Solution {
    public int solution(int number, int limit, int power) {
        int answer = 0;
        int[] weapon = new int[number];

        for (int i = 1; i <= number; i++) {
            weapon[i - 1] = count(i);
        }

        for (int i = 0; i < weapon.length; i++) {
            if (weapon[i] > limit) {
                weapon[i] = power;
            }
        }

        answer = Arrays.stream(weapon).sum();

        return answer;
    }

    public int count(int n) {
        int count = 0;

        for (int i = 1; i <= Math.sqrt(n); i++) {
            if (n % i == 0) {
                count += 2;
            }

            if (n / (double)i == (double)i) {
                count--;
            }
        }

        return count;
    }
}