https://programmers.co.kr/learn/courses/30/lessons/77884
코딩테스트 연습 - 약수의 개수와 덧셈
두 정수 left와 right가 매개변수로 주어집니다. left부터 right까지의 모든 수들 중에서, 약수의 개수가 짝수인 수는 더하고, 약수의 개수가 홀수인 수는 뺀 수를 return 하도록 solution 함수를 완성해주
programmers.co.kr
이번 문제도 생각보다 쉽게 풀었다.
약수의 개수를 구하고 해당 약수의 개수가 짝수인지 홀수인지만 구분해주면 되는 부분이었다.
약수를 구하여 짝, 홀을 리턴하는 메소드를 별도로 만들어 코드에 간결함을 더해보았다.
[결과코드]
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;
}
}
}
이런 문제만 나왔으면 좋겠다...는 현실은 그렇지 않지. 힘내자.
[깃허브]
RUCKUSJERRY/practiceOfAlgorithm
Contribute to RUCKUSJERRY/practiceOfAlgorithm development by creating an account on GitHub.
github.com
'문제풀이 > 프로그래머스' 카테고리의 다른 글
다트게임 / 프로그래머스 연습문제 / 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 |