알고리즘
프로그래머스 - 약수의 개수와 덧셈
Heidong
2022. 7. 24. 17:29
반응형
내 풀이
public class P_40 {
public static int solution(int left, int right) {
int answer = 0;
for(int i=left; i<=right; i++) { // 13 ~ 17
int cnt = 0; // 약수의 개수
for(int j=1; j<=i; j++) {
if(i % j == 0) {
cnt++;
}
}
if(cnt % 2 == 0) { // 약수의 개수가 짝수라면
answer += i;
} else {
answer -= i;
}
}
return answer;
}
public static void main(String[] args) {
// 약수의 개수와 덧셈
int left = 13;
int right = 17;
System.out.println(solution(left, right));
}
}
반복문 2개를 중첩하여 풀었다.
left, right의 사이를 돌아야하는 전체 틀의 반목문과
그 사이에서 약수의 개수를 구해서 비교하는 반복문을 중첩 했다.
다른 사람 풀이
class Solution {
public int solution(int left, int right) {
int answer = 0;
for (int i=left;i<=right;i++) {
//제곱수인 경우 약수의 개수가 홀수
if (i % Math.sqrt(i) == 0) {
answer -= i;
}
//제곱수가 아닌 경우 약수의 개수가 짝수
else {
answer += i;
}
}
return answer;
}
}
수학적 공식을 사용하여 풀이한 모습.
약수의 개수가 홀수인 수를 n이라고 했을때
n % 루트n(제곱근) 은 0이 나온다는 공식.
반응형