for (int i = left; i <= right; i++) {}
int count = 0;
for (int j = 1; j <= i; j++) { // j = 1부터 i까지
if(i % j == 0) count++; // 나머지가 0인 경우(약수) 판별
}
if (count % 2 == 0) {
answer += i;
}else {
answer -= i;
}
만약 약수가 짝수라면 answer에 i만큼 더하고
홀수라면 answer에 i만큼 뺌
class Solution { public int solution(int left, int right) { int answer = 0; // left ~ right 약수의 개수 짝수 : +, 홀수 : - // 약수 -> 1을 포함한 나 자신 + number for (int i = left; i <= right; i++) { int count = 0; for (int j = 1; j <= i; j++) { // j = 1부터 i까지 if(i % j == 0) { // 나머지가 0인 경우(약수) 판별 count++; } } if (count % 2 == 0) { answer += i; }else { answer -= i; } } return answer; } }
public static int solution(int left, int right) { int answer = 0; int count = 0; Map<Integer, Integer> intMap = new LinkedHashMap<>(); for (int i = left; i <=right ; i++) { for (int j = 1; j <= i; j++) { if(i % j == 0){ count++; } } intMap.put(i,count); count = 0; } for(Integer key : intMap.keySet()){ if(intMap.get(key) % 2 ==0){ answer+= key; } else answer-= key; } return answer; }
public static boolean measure2(int n){ if(n % Math.sqrt(n) == 0 ) return true;// true일 때 갯수 홀수 else return false; // false일 때 갯수가 짝수 }