반응형
문제
두 정수 left와 right가 매개변수로 주어집니다. left부터 right까지의 모든 수들 중에서, 약수의 개수가 짝수인 수는 더하고, 약수의 개수가 홀수인 수는 뺀 수를 return 하도록 solution 함수를 완성해주세요.
입력 & 출력 제약사항
1 ≤ left ≤ right ≤ 1,000
테스트 케이스
left | right | result |
13 | 17 | 43 |
24 | 27 | 52 |
접근
약수 개수를 구할 수만 있다면 쉽게 풀리는 문제라 생각합니다.
약수 개수를 구하는법은 1부터 해당 수까지 나눠서 나머지가 0일때마다 카운트합니다.
ex) 10의 약수 개수는 10을 1부터 10까지 계속 나누어서 나머지가 0일때 카운트합니다..
10 % 1 = 0
10 % 2 = 0
10 % 3 = 1
10 % 4 = 2
10 % 5 = 0
10 % 6 = 4
10 % 7 = 3
10 % 8 = 2
10 % 9 = 1
10 % 10 = 0
0이 나오는경우는 1, 2, 5, 10 총 4개입니다.
코드
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++){
if(i % j == 0) cnt++;
}
if(cnt % 2 == 0) answer += i;
else{
answer -= i;
}
}
return answer;
}
}
주의
x
반응형
'공부 정리 > 프로그래머스' 카테고리의 다른 글
[프로그래머스] 자바 3진법 뒤집기 (0) | 2022.01.14 |
---|---|
[프로그래머스] 자바 124 나라의 숫자 (0) | 2022.01.13 |
[프로그래머스] 자바 체육복 (0) | 2022.01.11 |
[프로그래머스] 내적 (0) | 2022.01.10 |
[프로그래머스] 자바 폰켓몬 (0) | 2022.01.07 |
댓글