문제
https://school.programmers.co.kr/learn/courses/30/lessons/136798?language=java
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
나의 풀이
class Solution {
public int solution(int number, int limit, int power) {
int[] count = new int[number + 1];
for (int i = 1; i <= number; i++) {
for (int j = 1; j <= number / i; j++) {
count[i * j]++;
}
}
int answer = 0;
for (int i = 1; i <= number; i++) {
if (count[i] > limit) {
answer += power;
} else {
answer += count[i];
}
}
return answer;
}
}
이 문제의 핵심은 1부터 n까지 약수의 개수를 찾는 방법이다. number 크기의 배열(count)을 생성한다. 인덱스 값을 편하게 하기위해 number + 1만큼 생성하였다.
1부터 n까지 약수의 개수를 구할 때는 위의 방법이 제일 효율적이고 이해하기 쉬운 로직이라고 알고 있다. 더 좋은 방법이 있으면 추천좀...
이 참에 약수의 개수 구하는 로직들을 정리해서 포스팅 해야겠다.
'학습 > 프로그래머스' 카테고리의 다른 글
[프로그래머스] 푸드 파이트 대회(java) (0) | 2023.02.03 |
---|---|
[프로그래머스] 과일 장수(java) (0) | 2023.02.03 |
[프로그래머스] 로또의 최고 순위와 최저 순위(java) (0) | 2023.02.02 |
[프로그래머스] 약수의 개수와 덧셈(java) (0) | 2023.02.02 |
[프로그래머스] 숫자 문자열과 영단어(java) (0) | 2023.02.02 |