코딩 테스트
(Java) 프로그래머스 약수의 개수와 덧셈
로승리
2021. 11. 20. 02:47
내 답에서 변수와 코드의 개수를 줄이는 연습을 해야겠다는 생각이 들었다.
풀 때는 쉽다는 생각이 들었는데 풀고 나서 급 반성하게 되었다.
최종 코드
import java.util.ArrayList;
import java.util.List;
class Solution {
public int solution(int left, int right) {
int answer = 0;
List<Integer> num = new ArrayList<>();
int temp = 0;
// 수 구해서 리스트에 저장
while (left != right + 1) {
num.add(left++);
}
for (int i = 0; i < num.size(); i++) {
// 약수의 개수 측정 변수
int dnum = 0;
for (int j = 1; j <= num.get(i); j++) {
if(num.get(i) % j == 0) {
dnum++;
}
}
// 홀수면
if (dnum % 2 != 0) {
temp = num.get(i) * -1;
}
// 짝수면
else {
temp = num.get(i);
}
answer += temp;
}
return answer;
}
}
다른 분 코드
class Solution {
public int solution(int left, int right) {
int answer = 0;
List<Integer> num = new ArrayList<>();
for (int i=left;i<=right;i++) {
//제곱수인 경우 약수의 개수가 홀수
if (i % Math.sqrt(i) == 0) {
answer -= i;
}
//제곱수가 아닌 경우 약수의 개수가 짝수
else {
answer += i;
}
}
return answer;
}
}