https://programmers.co.kr/learn/courses/30/lessons/77884
이번 문제도 생각보다 쉽게 풀었다.
약수의 개수를 구하고 해당 약수의 개수가 짝수인지 홀수인지만 구분해주면 되는 부분이었다.
약수를 구하여 짝, 홀을 리턴하는 메소드를 별도로 만들어 코드에 간결함을 더해보았다.
[결과코드]
public class divisor {
public static void main(String[] args) {
solution(24, 27);
}
public static int solution(int left, int right) {
int answer = 0;
// left ~ right 까지
for (int i = left; i <= right; i++) {
// 만약 i가 약수라면 더하고 아니면 뺀다
if (getDivisor(i)) {
answer += i;
} else {
answer -= i;
}
}
return answer;
}
private static boolean getDivisor(int n) {
int count = 0;
// 1~n 까지 n을 나눠서 떨어지면 count를 더해준다.
for (int i = 1; i <= n; i++) {
if (n % i == 0) {
count++;
}
}
// 카운트가 짝수면 true, 홀수면 false
if (count % 2 == 0) {
return true;
} else {
return false;
}
}
}
이런 문제만 나왔으면 좋겠다...는 현실은 그렇지 않지. 힘내자.
[깃허브]
'문제풀이 > 프로그래머스' 카테고리의 다른 글
다트게임 / 프로그래머스 연습문제 / programmers / level1 / Java (0) | 2021.07.04 |
---|---|
최대공약수와 최소공배수 / 프로그래머스 연습문제 / programmers / level1 / Java (0) | 2021.06.29 |
내적 / 프로그래머스 연습문제 / programmers / level1 / Java (0) | 2021.06.10 |
[1차] 비밀지도 / 프로그래머스 연습문제 / programmers / level1 / Java (0) | 2021.06.09 |
폰켓몬 / 프로그래머스 연습문제 / programmers / level1 / Java (0) | 2021.06.08 |