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
'프로그래머스 코딩테스트 > JAVA' 카테고리의 다른 글
[프로그래머스] 옹알이 (2) JAVA (0) | 2024.08.21 |
---|---|
[프로그래머스] 로또의 최고 순위와 최저 순위 JAVA (0) | 2024.08.20 |
[프로그래머스] 덧칠하기 JAVA (0) | 2024.08.08 |
[프로그래머스] 소수 만들기 JAVA (0) | 2024.08.08 |
[프로그래머스] 모의고사 JAVA (0) | 2024.08.08 |