💡 문제
💬 입출력 예시
📌 풀이(소스코드)
class Solution {
public int solution(int number, int limit, int power) {
int answer = 0;
for (int i = 1; i <= number; i++) {
int result = getNum(i);
if (result <= limit) {
answer += result;
}
else {
answer += power;
}
}
return answer;
}
int getNum(int n) {
int cnt = 0;
for (int i = 1; i * i <= n; i++) {
if (n % i == 0) {
cnt++;
if (i * i < n) {
cnt++;
}
}
}
return cnt;
}
}
📄 해설
- 1차 풀이 : 단순하게 약수의 개수를 구하기 위해 2중 for문을 사용하여 풀이하였으나, 시간초과가 났음
- 단순 반복문이 아닌, 시간을 절약할 수 있는 알고리즘을 세워서 해결해야하는 문제
- 약수 개수를 구하는 효율적인 코드를 직접 짜지 못하여, 다른 사람의 풀이를 참고하였음