📘문제 설명
두 정수 left와 right가 매개변수로 주어집니다. left부터 right까지의 모든 수들 중에서, 약수의 개수가 짝수인 수는 더하고, 약수의 개수가 홀수인 수는 뺀 수를 return 하도록 solution 함수를 완성해주세요.
https://school.programmers.co.kr/learn/courses/30/lessons/77884
프로그래머스
SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프
programmers.co.kr
📌 제한조건
- 1 ≤ left ≤ right ≤ 1,000
💡 개념 설명
- 반복 범위: left부터 right까지의 모든 정수를 순회하는 외부 반복문(for-loop)을 만듭니다.
- 약수의 개수 계산: 외부 반복문 내에서 현재 수(num)의 약수 개수를 세는 내부 로직을 실행합니다. 약수 개수를 세는 가장 간단한 방법은 1부터 num까지 나누어 떨어지는지 확인하는 것입니다.
- 짝수/홀수 판별 및 합산: 약수의 개수가 계산되면,
- 개수가 짝수이면 현재 수(num)를 최종 결과에 더합니다.
- 개수가 홀수이면 현재 수(num)를 최종 결과에서 뺍니다.
- 반환: 모든 순회가 끝난 후 최종 합계(answer)를 반환합니다.
📎 입출력 예시



📎 코드
public class Solution {
public int solution(int left, int right) {
int answer = 0;
for (int num = left; num <= right; num++) {
int count = 0;
// 약수의 개수를 세는 루프
for (int i = 1; i <= num; i++) {
if (num % i == 0) {
count++;
}
}
// 약수 개수에 따라 더하거나 빼기
if (count % 2 == 0) {
answer += num;
} else {
answer -= num;
}
}
return answer;
}
public static void main(String[] args) {
Solution sol = new Solution();
// 테스트 케이스
int left1 = 13;
int right1 = 17;
int left2 = 24;
int right2 = 27;
System.out.println("13부터 17까지 결과: " + sol.solution(left1, right1)); // 예상 출력: 43
System.out.println("24부터 27까지 결과: " + sol.solution(left2, right2)); // 예상 출력: 52
}
}
📎 결과

'Java' 카테고리의 다른 글
| [Java] 코딩 25 - 프로그래머스 기출 문제(JAVA) / 부족한 금액 계산하기 / Day 22 (0) | 2025.09.29 |
|---|---|
| [Java] 코딩 24 - 프로그래머스 기출 문제(JAVA) / 문자열 내림차순으로 배치하기 / Day 21 (0) | 2025.09.26 |
| [Java] 코딩 22 - 프로그래머스 기출 문제(JAVA) / 내적 / Day 20 (1) | 2025.09.23 |
| [Java] 코딩 21 - 프로그래머스 기출 문제(JAVA) / 수박수박수박수박수박수? / Day 20 (0) | 2025.09.23 |
| [Java] 코딩 20 - 프로그래머스 기출 문제(JAVA) / 가운데 글자 가져오기 / Day 19 (0) | 2025.08.20 |