문제
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
알고리즘
에라토스테네스의 체
풀이
소수를 구하는 에라토스테네스의 체를 구현했던 것과 유사하게
i 부터 number 까지 증가시키며, 그 수의 배수들의 count를 1씩 증가시킨다.
14의 약수 1, 2, 7, 14
15의 약수 1, 3, 5, 15
...
위 방식처럼 수를 1씩 늘려가면서 약수를 구하는 방식이 아니라
1의 배수 1, 2, 3 , ... , number
2의 배수 2, 4, 6 , ...
3의 배수 3, 6, 9 , ...
...
위 방식처럼 수를 1씩 늘려가면서 배수의 count를 1씩 늘려주는 것이다.
탐색이 끝나면 각 수의 약수의 개수를 구할 수 있고
각 수의 약수의 개수가 limit 보다 크다면 power를, 그렇지 않다면 약수의 개수를 누적한다.
코드
class Solution {
public int solution(int number, int limit, int power) {
int[] count = new int[number + 1];
int answer = 0;
for (int i = 1; i <= number; i++)
for (int j = i; j <= number; j += i)
count[j]++;
for (int i = 1; i <= number; i++)
answer += count[i] > limit ? power : count[i];
return answer;
}
}
'Algorithm > 프로그래머스' 카테고리의 다른 글
[프로그래머스] k진수에서 소수 개수 구하기 (Java) (0) | 2022.11.26 |
---|---|
[프로그래머스] 귤 고르기 (Java) (0) | 2022.11.26 |
[프로그래머스] 괄호 변환 (Java) (0) | 2022.11.17 |
[프로그래머스] 문자열 압축 (Java) (0) | 2022.11.15 |
[프로그래머스] 후보키 (Java) (0) | 2022.11.15 |