문제 풀이 (JAVA)
class Solution {
public int solution(int left, int right) {
int answer = 0; // 결과 출력 변수
for(int i=left; i<=right; i++){
int cnt=0; // 약수 카운트 초기화
for(int j=1; j<=i; j++){ // 1부터 left~right 까지 약수 계산문
if(i%j==0){ // 임의의 숫자 j로 나눴을때 0이면 약수
cnt++; // 약수 카운트 증가
}
}
if(cnt%2==0){ // 약수가 짝수이면
answer+=i; // 출력값에 더한다.
}else{ // 약수가 홀수이면
answer-=i; // 출력값에 뺀다.
}
}
return answer;
}
}
주요 핵심 포인트
1. left부터 right 숫자 사이 모든 약수를 구하기 위하여 이중 for문을 돌렸다.
2. 나머지 ==0인 숫자는 약수이므로 해당 숫자의 약수카운트를 증가시켰다.
3. 약수카운트가 짝수이면 더하고, 약수카운트가 홀수이면 뺀다.
'프로그래머스(JAVA)' 카테고리의 다른 글
폰켓몬 (0) | 2022.05.21 |
---|---|
실패율 (0) | 2022.05.21 |
3진법 뒤집기 (0) | 2022.05.21 |
예산 (0) | 2022.05.21 |
두 개 뽑아서 더하기 (0) | 2022.05.21 |