Algorithm/Java

[Java][알고리즘 공부] 약수의 합 < 자바 복습 >

복습 한 내용

- 자바 클래스

- 자료형 int, string

- ArrayList

- Comparator

- Iterator

 


 

Class divisorSum

import java.util.ArrayList;
import java.util.Comparator;
import java.util.Iterator;

public class divisorSum {
    public int solution(int n) {
        int answer = 0;

        ArrayList<Integer> arr = new ArrayList();
        int half = (int) Math.sqrt(n);

        for(int i = 1; i <= half ; i++){
            if(n % i == 0) {
                arr.add(i);
                if(n / i != i){
                    arr.add(n / i);
                }
            }
        }

        arr.sort(Comparator.naturalOrder());    // array

        Iterator<Integer> stringIterator = arr.iterator();

        while(stringIterator.hasNext()){
            int showComponent = stringIterator.next();
            System.out.print(showComponent + " ");
        }

        int arrSize = arr.size();
        for(int i = 0; i < arrSize ; i++){
            answer += arr.get(i);
        }

        return answer;
    }
}

약수의 합을 구하는 클래스를 구현한다.

 

Math 인스턴스의 sqrt 함수

 

 

main 함수

import java.util.Scanner;

public class main {
    public static void main(String[] args){
        // test1 one = new test1();
        Scanner scan = new Scanner(System.in);
        String inputStringValue = scan.nextLine();
        Integer inputIntValue = scan.nextInt();

        divisorSum testOne = new divisorSum();

        int answer = testOne.solution(inputIntValue);

        System.out.println(inputStringValue);
        System.out.println("답은 : " + answer + " 입니다");

    }
}