o 요구사항
left ~ rigtht까지 각각 주어진 숫자의 약수의 개수를 구하고 홀짝을 판별한다
o 코드진행
1. 약수의 개수 구하기
2. 홀짝 여부 판별
3. 약수가 짝수이면 더하고, 홀수라면 뺀 값을 리턴
o 코드설계
1. 약수 개수 구하기
N의 약수는 자기자신 N을 제외하고는 N/2 보다 클 수 없다
예를 들어 12의 약수는 12를 제외하고는 7이상이 될 수 없다
이를 이용해 메소드 생성
2. 홀짝 여부
2로 나누어 나머지가 1이면 홀수 0이면 짝수
o 완성코드
class Solution {
public int solution(int left, int right) {
int answer = 0;
for(int i=left; i<right+1; i++) {
answer = sum(answer, i, isEven(countMeasure(i)));
}
return answer;
}
//약수 개수 구하기
int countMeasure(int n) {
if(n == 1) {
return 1;
}
int count = 2;
for(int i=1; i<n/2; i++) {
if(n%(i+1) == 0) {
count++;
}
}
return count;
}
//짝수인가 판단하기
boolean isEven(int x) {
if(x%2 == 0) {
return true;
}
return false;
}
//계산식
int sum(int sum, int number, boolean isEven){
if(isEven) {
sum = sum + number;
}
if(!isEven) {
sum = sum - number;
}
return sum;
}
}
'코딩테스트 > 프로그래머스' 카테고리의 다른 글
[Java][프로그래머스-코딩테스트 level2] 피보나치 수 (0) | 2021.06.12 |
---|---|
[Java][프로그래머스-코딩테스트 level1] 3진법 뒤집기 (0) | 2021.06.11 |
[Java][프로그래머스-코딩테스트 level1] 로또의 최고 순위와 최저 순위 (0) | 2021.06.10 |
[Java][프로그래머스-코딩테스트 level1] 폰켓몬 (0) | 2021.06.10 |
[Java][프로그래머스-코딩테스트 level1] 2016년 (0) | 2021.06.09 |