💬 문제 설명
두 정수 left와 right가 매개변수로 주어집니다. left부터 right까지의 모든 수들 중에서, 약수의 개수가 짝수인 수는 더하고, 약수의 개수가 홀수인 수는 뺀 수를 return 하도록 solution 함수를 완성해주세요.
🚫 제한 사항
- 1 ≤ left ≤ right ≤ 1,000
📢 입출력 예
👨🏫 입출력 예 설명
📃 제출 코드
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;
}
}
✏ 해결방법 & 배운점
주어진 두 정수 left와 right를 사용하여, left부터 right까지 값을 증가시키며 각 숫자의 약수의 개수를 세고, 약수의 개수가 짝수이면 더하고, 홀수이면 빼어 문제를 해결하였습니다.
++ ) 다른 사람 풀이
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;
}
}
왜 제곱수의 약수 개수는 홀수인가?
일반적으로 숫자 n의 약수는 쌍으로 나타납니다. 예를 들어, 12의 약수는 1, 2, 3, 4, 6, 12로 쌍을 이룹니다: (1, 12), (2, 6), (3, 4). 그러나 제곱수는 가운데에 약수가 하나 더 있습니다. 예를 들어, 16의 약수는 1, 2, 4, 8, 16입니다. 16은 4의 제곱이므로, 4가 중간에 하나 더 추가되며 짝을 이루지 않습니다. 따라서 약수의 개수는 홀수가 됩니다.
제곱수로 약수가 홀수 인지 짝수인지 확인할 수 있는 방법을 알아갔습니다...
'PS > LV.1 프로그래머스 문제' 카테고리의 다른 글
[프로그래머스] LV.1 문자열 다루기 기본 - 자바 [27/80] (0) | 2024.07.18 |
---|---|
[프로그래머스] LV.1 부족한 금액 계산하기 - 자바 [26/80] (0) | 2024.07.18 |
[프로그래머스] LV.1 문자열 내림차순으로 정렬하기 - 자바 [24/80] (0) | 2024.07.18 |
[프로그래머스] LV.1 내적 - 자바 [23/80] (0) | 2024.07.18 |
[프로그래머스] LV.1 수박수박수박수박수박수? - 자바 [22/80] (0) | 2024.07.17 |