Dev/Algorithm

1D1A - One Day One Algorithm

healthyryu 2018. 3. 13. 23:14



문제 - 약수의 합

어떤 수를 입력받아 그 수의 약수를 모두 더한 수 sumDivisor 함수를 완성해 보세요. 예를 들어 12가 입력된다면 12의 약수는 [1, 2, 3, 4, 6, 12]가 되고, 총 합은 28이 되므로 28을 반환해 주면 됩니다.



import java.util.ArrayList;

import java.util.List;


class SumDivisor {

public int sumDivisor(int num) {

int answer = 0;

                List<Integer> arr = new ArrayList<>();

                for (int i = 1; i<=num; i++) {

                if (num % i == 0) {

          arr.add(i);

                   }

               }

    

            for (int i = 0; i < arr.size(); i++) {

            answer = answer + arr.get(i);

            }

return answer;

}


public static void main(String[] args) {

SumDivisor c = new SumDivisor();

System.out.println(c.sumDivisor(12));

}

}


굳이 필요 없는 List 를 만들었다. 그리고 for 문이 2번 사용되었다.

다른 사람들 방식을 참고.


public int sumDivisor(int num) {

    int answer = 0;

    for (int i = 1; i <= num; i++) {

        if (num % i == 0) {

            answer = answer + i;

        }

    }


    return answer;

}


문제 출처 : https://programmers.co.kr/learn/challenge_codes/1

반응형

'Dev > Algorithm' 카테고리의 다른 글

CS50 공부 - 알고리즘  (0) 2018.03.20
1D1A - One Day One Algorithm  (0) 2018.03.19
CS50 공부 - 알고리즘  (0) 2018.03.19
1D1A - One Day One Algorithm  (0) 2018.03.14
10진수를 2진수로 - 입력값을 진법수에 맞게 출력  (0) 2018.03.07