728x90
이해하기
처음에는 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;
}
}
'JAVA > Coding Test Study' 카테고리의 다른 글
[Lv.0] 프로그래머스 - 구슬을 나누는 경우의 수 : Java (0) | 2024.05.10 |
---|---|
[Lv.0] 프로그래머스 - 특정 문자열로 끝나는 가장 긴 부분 문자열 찾기 : Java (0) | 2024.05.10 |
[Lv.0] 프로그래머스 - 문자열 잘라서 정렬하기 : Java (0) | 2024.05.10 |
[Lv.1] 프로그래머스 - 햄버거 만들기 : Java (0) | 2024.05.10 |
[Lv.1] 프로그래머스 - 성격 유형 검사하기 : Java (0) | 2024.05.10 |