문제 설명
두 정수 left와 right가 매개변수로 주어집니다. left부터 right까지의 모든 수들 중에서, 약수의 개수가 짝수인 수는 더하고, 약수의 개수가 홀수인 수는 뺀 수를 return 하도록 solution 함수를 완성해주세요.
입출력 예
입출력 예 설명
소스코드
class Solution {
public int solution(int left, int right) {
int answer = 0;
int cnt = 0;
for(int i = left; i <= right; i++){
cnt = 0;
for(int j = 1; j<= i; j++){
if( i % j == 0) cnt++;
}
if( cnt % 2 == 0){
answer += i;
}else{
answer += i * -1;
}
}
return answer;
}
}
2중 for문을 이용하여 바깥 for문에서는 left부터 right까지 반복,
안쪽 for문에서는 1부터 left(자기 자신)까지를 반복하여 약수를 구하는 반복문을 구현하였다.
약수를 발견 할때 마다 cnt를 증가시켜 개수를 파악하였다.
약수의 개수가 짝수이면 answer 변수에 누적해서 더하고
약수의 개수가 홀수이면 answer 변수에 -1을 곱한 값을 누적하여 뺄셈을 하였다.
반응형
'알고리즘 > 프로그래머스' 카테고리의 다른 글
[프로그래머스 JAVA] 완주하지 못한 선수 (0) | 2021.11.28 |
---|---|
[프로그래머스 JAVA] 숫자 문자열과 영단어 (0) | 2021.10.20 |
[프로그래머스 JAVA] 내적 (0) | 2021.10.11 |
[프로그래머스 JAVA] 수박수박수박수박수박수? (0) | 2021.09.23 |
[프로그래머스 JAVA] 음양 더하기 (0) | 2021.09.20 |