Jam's story
[프로그래머스] 기사단원의 무기 java 본문
이렇게푸니 제출에서 시간초과됨
public static int solution(int number, int limit, int power) {
int answer = 0;
int[] sosu=new int[number+1];
for (int i = 1; i <= number; i++) {
for (int j = 1; j <=i; j++) {
if(i%j==0) {
sosu[i]++;
}
}//for-j
if(sosu[i]>limit) {sosu[i]=power;}
answer+=sosu[i];
} //for-i
return answer;
}
약수구하는 부분에서 시간초과가 난 것 같다.
하나의 약수를 알면, number/i =j 또다른 약수 j 를 알 수 있다
package lv01;
import java.util.Iterator;
public class 기사단원의무기 {
//number를 for문으로 1<=x<=number까지 모든 수를 약수갯수세기
//limit 넘는게 있다면 그것은 power로 대체
//모든 값을 더해서 result 반환
public static int solution(int number, int limit, int power) {
int answer = 0;
for (int i = 1; i <= number; i++) {
//약수세주는것을 숫자마다 초기화 해줘야 하니까
int count=0;
for (int j = 1; j *j<=i; j++) {
if(j*j==i) {
count++;
} else if(i%j==0){
count+=2;
}
}//for-j
//i문이 끝나기 전에 answer에 해당값을 더해준다.
answer+= count>limit? power: count;
} //for-i
System.out.println(answer);
return answer;
}
public static void main(String[] args) {
solution(5,3,2);
solution(10,3,2);
}
}
'코딩테스트 > 프로그래머스' 카테고리의 다른 글
[프로그래머스] 배열의 유사도 (0) | 2022.12.29 |
---|---|
[프로그래머스] ox퀴즈 (0) | 2022.12.29 |
[프로그래머스] 명예의 전당 java (0) | 2022.12.27 |
[프로그래머스] 숫자찾기 java (0) | 2022.12.27 |
[프로그래머스] 문자열 나누기 java (0) | 2022.12.27 |
Comments