반응형
연습문제 : 기사단원의 무기 Lv1
https://school.programmers.co.kr/learn/courses/30/lessons/136798
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
약수 개수 구하기 시간초과 피하기 문제로
1 ~ N 까지 전부 검증을 하는 방법 O(n) 이 아닌 √N까지 구하는 방식으로 처리
class Solution {
public int solution(int number, int limit, int power) {
int answer = 0;
int[] factors = new int[number+1];
// 약수 개수 구하기
for(int n = 1;n<=number;n++){
int cnt = 0;
for(int i=1;i * i <=n;i++){
if(i * i == n) {
cnt++;
} else if(n % i == 0) {
cnt += 2;
}
}
factors[n] = cnt;
}
for(int i=1;i<=number;i++) {
if(factors[i] > limit) answer += power;
else answer += factors[i];
}
return answer;
}
}
반응형