약수의 개수와 덧셈(java)
문제설명
생각하기
- left부터 right까지 약수의 개수를 구해가며 반복
- 개수가 짝수면 더하고 홀수면 빼자
내 풀이
class Solution {
public int solution(int left, int right) {
int ans = 0;
int cnt =0;
for(int i=left; i<=right; i++){
for(int j=1; j<=i; j++){
if(i% j ==0){
cnt++;
}
}
if(cnt % 2==0) ans += i;
else ans -= i;
cnt=0;
}
return ans;
}
}
개수를 세는 변수 cnt를 주어 반복문안에서 약수가 있을 때마다 더해주었다.
cnt의 개수가 짝수면 더하고 홀수면 빼준다.
이후 cnt =0 으로 초기화
개선된 코드
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;
}
}
제곱수인경우 약수의 개수는 홀수, 제곱수가 아닌 경우 약수의 개수는 짝수
이문제를 접하면서 처음 알게된 사실이다. 기억하고 있으면 다른 문제 풀 때 도움이 될 것같다.
Author And Source
이 문제에 관하여(약수의 개수와 덧셈(java)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@juntree/약수의-개수와-덧셈java저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)