프로그래머스 코딩테스트/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