내 답에서 변수와 코드의 개수를 줄이는 연습을 해야겠다는 생각이 들었다.
풀 때는 쉽다는 생각이 들었는데 풀고 나서 급 반성하게 되었다.
최종 코드
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;
}
}
'코딩 테스트' 카테고리의 다른 글
(Java) 프로그래머스 폰켓몬 (0) | 2021.11.24 |
---|---|
(Java) 프로그래머스 실패율 (0) | 2021.11.23 |
(Java) 프로그래머스 3진법 뒤집기 (0) | 2021.11.15 |
(Java) 문자열 p와 y의 개수 (0) | 2021.11.13 |
(Java) 프로그래머스 2016 (0) | 2021.11.13 |