변경이력

돌아가기
2 14개 문자 삭제

2016/12/26 08:32

bbubbush

```{.java} public class Lv1_01 { public static void main(String[] args) { PerfectNumber p = new PerfectNumber(500000); p.result(); } } class PerfectNumber { private int n; public PerfectNumber(int n){ this.n = n; } void play(int num) { int result = num; // 비교를 위해 원본을 저장 ArrayList<Integer> arr = new ArrayList<Integer>(); // 배열을 생성 [크기지정의 문제 발생] int sum = 1; // 약수의 합을 구할 변수 1은 모든 수의 공통약수이기 때문에 디폴트로 지정 int end = num; // for문의 중복을 막기위해 종료 위치를 변경해주는 변수 for (int i = 2; i < end; i++) { // num을 2부터 나눠보는데 나머지가 0이면 나누어 떨어지기 때문에 약수가 된다 if (num%i==0) { arr.add(i); arr.add(num/i); end = num/i; } } //배열의 합 for (int i = 0; i < arr.size(); i++) { sum+=arr.get(i); } //배열의 합이 처음 입력받은 수와 같은지 비교 if (sum==result) { System.out.println(sum); } } void result() { //입력받은 수부터 2까지 계속 돌려본다 for (int i = n; i >= 2; i--) { play(i); } } } ```
```{.java} public class Lv1_01 { public static void main(String[] args) { PerfectNumber p = new PerfectNumber(500000); p.result(); } } class PerfectNumber { private int n; public PerfectNumber(int n){ this.n = n; } void play(int num) { int result = num; // 비교를 위해 원본을 저장 ArrayList<Integer> arr = new ArrayList<Integer>(); // 배열을 생성 [크기지정의 문제 발생] int sum = 1; // 약수의 합을 구할 변수 1은 모든 수의 공통약수이기 때문에 디폴트로 지정 int end = num; // for문의 중복을 막기위해 종료 위치를 변경해주는 변수 for (int i = 2; i < end; i++) { // num을 2부터 나눠보는데 나머지가 0이면 나누어 떨어지기 때문에 약수가 된다 if (num%i==0) { arr.add(i); arr.add(num/i); end = num/i; } } //배열의 합 for (int i = 0; i < arr.size(); i++) { sum+=arr.get(i); } //배열의 합이 처음 입력받은 수와 같은지 비교 if (sum==result) { System.out.println(sum); } } void result() { //입력받은 수부터 2까지 계속 돌려본다 for (int i = n; i >= 2; i--) { play(i); } } } ```
1 Original

2016/12/26 08:31

bbubbush

코딩도장

코딩도장은 프로그래밍 문제풀이를 통해서 코딩 실력을 수련(Practice)하는 곳입니다.