프로그래머스 코딩테스트/JAVA

[프로그래머스] 기사단원의 무기 JAVA

Coding-Su 2024. 8. 8. 20:42
728x90

문제

[프로그래머스] 기사단원의 무기

 

프로그래머스

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

programmers.co.kr

 

 

 

정답

import java.util.*;
class Solution {
    public int solution(int number, int limit, int power) {
        int answer = 0;
        int[] num = new int[number];
        for(int i = 0; i < number; i++) {
            for(int j = 1; j <= (int) Math.sqrt(i + 1); j++) {
                if((i + 1) % j == 0) {
                    num[i]++;
                    if((i + 1) / j != j) num[i]++;
                }
            }
        }
        for(int n : num) {
            if(n > limit) answer += power;
            else answer += n;
        }
        return answer;
    }
}

 

처음에는 모든 숫자를 돌면서 약수를 구했었습니다. 하지만 number가 최대 100,000개 들어가는 경우에 시가 초과가 떴습니다. 그래서 약수를 구하는 부분에서 루트를 이용하여 숫자 짝이 맞는 것을 이용하여 문제를 풀었습니다.

728x90