class Solution {
public int solution(int left, int right) {
int answer = 0;
for (int i = left; i <= right; i++) {
int count = 0;
for (int j = 1; j <= i; j++) {
if(i%j==0) {
count++;
}
}
if(count%2==0) {
answer += i;
}else {
answer -= i;
}
}
return answer;
}
}
-> 간단한 문제였다. 이중 for문을 사용해 약수의 개수를 count 해서 짝수면 더하고 홀수면 빼준다.
문제 풀이
1. 첫번째 for문의 시작지점을 left로 선언 후, 범위를 right 이하로 설정한다.
2. 각 숫자들의 약수의 개수를 셀 수 있게 count 변수를 선언
3. 두번째 for문 시작지점을 1로 하고, 범위를 i 이하로 설정한다.
4. i숫자의 약수의 개수를 구한 후 짝수면 더해주고, 홀수면 빼주는 if else문을 사용한다.
5. 끝
더 간단해서 무릎을 탁 친 방법
class Solution {
public int solution(int left, int right) {
int answer = 0;
for (int i=left;i<=right;i++) {
//제곱수인 경우 약수의 개수가 홀수
if (i % Math.sqrt(i) == 0) {
answer -= i;
}
//제곱수가 아닌 경우 약수의 개수가 짝수
else {
answer += i;
}
}
return answer;
}
}
i를 Math.sqrt(i)로 나눴을 때에 나눠지면 약수의 개수가 홀수이다.
i를 Math.sqrt(i)로 나눴을 때 그 값이 0이 되면 제곱수이므로 약수의 개수가 홀수
i를 Math.sqrt(i)로 나웠을 때 그 값이 0이 아니면 제곱수가 아니므로 약수의 개수가 짝수가 된다.
'코딩테스트 문제풀이' 카테고리의 다른 글
프로그래머스 (예산) (0) | 2021.09.29 |
---|---|
프로그래머스 (3진법 뒤집기) (0) | 2021.09.28 |
프로그래머스 (실패율) (0) | 2021.09.22 |
프로그래머스 (폰켓몬) (0) | 2021.09.21 |
프로그래머스 (크레인 인형뽑기 게임) (0) | 2021.09.20 |