[Level1]약수의 합
by EastGlow
문제
어떤 수를 입력받아 그 수의 약수를 모두 더한 수 sumDivisor 함수를 완성해 보세요. 예를 들어 12가 입력된다면 12의 약수는 [1, 2, 3, 4, 6, 12]가 되고, 총 합은 28이 되므로 28을 반환해 주면 됩니다.
풀이 1
class SumDivisor {
public int sumDivisor(int num) {
int answer = num;
for(int i=1; i<=num/2; ++i)
if(num%i == 0) answer += i;
return answer;
}
// 아래는 테스트로 출력해 보기 위한 코드Q입니다.
public static void main(String[] args) {
SumDivisor c = new SumDivisor();
System.out.println(c.sumDivisor(12));
}
}
일단 어떤 수의 절반값은 그 수의 약수이다. 그래서 절반값을 for문의 탐색범위로 잡으면 전체 수로 잡는것보다 성능상 조금의 이득(?)이 있다. 수학적인 생각을 조금 하면 무난하게 풀 수 있는 문제이다. 다른 사람들도 거의 이렇게 풀어서 딱히 다른 풀이는 없는 듯 하다.
Subscribe via RSS