프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
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;
}
}
'JAVA > 프로그래머스' 카테고리의 다른 글
[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 |