문제
풀이
(1) 문제 분석하기
- 약수의 개수를 count하는 메소드를 따로 분리
- 입력 받은 수만큼 반복문을 돌면서 메소드로 약수의 개수를 구한 뒤, 짝/홀수 판별하여 answer에 담아줌
- 이때 약수 개수가 홀수라면 음수로 저장되어야 하므로 * (-1)
(2) 슈도코드 작성하기
정답을 담을 int형 answer 변수 선언
for(left부터 right만큼) {
if(약수의 개수가 짝수라면) {
정답에 i를 담음
else(약수의 개수가 홀수라면) {
정답에 -i를 담음
}
}
// 약수의 개수를 구할 메소드 분리
정수 n을 매개변수로 받는 메소드 생성
개수를 세줄 int형 변수 count 1로 초기화
for(2부터 n포함까지) {
if(n을 i로 나눴을 때 나머지가 0이면 count++
count를 반환
}
(3) 코드 구현하기
package algorithm.test25;
public class Solution {
// 자연수 n을 매개 변수로 받고 약수의 개수 count를 리턴하는 메소드 생성
// 반복문으로 left부터 right까지 돌면서 약수 개수의 짝/홀수를 판별
// 모든 값을 int형 정답 변수에 담되, 약수 개수가 홀수라면 * (-1)
public int solution(int left, int right) {
int answer = 0;
for (int i = left; i <= right; i++) {
if (divisorCount(i) % 2 == 0) {
answer += i;
} else {
answer += (i * (-1));
}
}
return answer;
}
public int divisorCount(int n) {
int count = 1; // 1 포함
for (int i = 2; i <= n; i++) {
if (n % i == 0) count++;
}
return count;
}
public static void main(String[] args) {
int left = 24;
int right = 27;
Solution sol = new Solution();
System.out.println(sol.solution(left, right));
}
}
'📊 Algorithm&SQL' 카테고리의 다른 글
[Java/프로그래머스] 예산 (2) | 2022.11.27 |
---|---|
[Java/프로그래머스] 약수의 합 (0) | 2022.11.26 |
[Java/프로그래머스] 숫자의 표현 (1) | 2022.11.22 |
[Java/프로그래머스] 숫자 문자열과 영단어 (0) | 2022.11.22 |
[Java/프로그래머스] 문자열 내림차순으로 배치하기 (0) | 2022.11.22 |