[SWEA 1933] 간단한 N의 약수
업데이트:
문제
- SWEA 1933번
- 문제의 저작권은 SW Expert Academy에 있습니다.
접근방식
입력받은 N의 약수의 최대 개수는 N보다 클 수 없다.
따라서 최대 1부터 N까지 담기 위해 크기가 N+1인 배열을 만들어 N의 약수만을 담는다.
1부터 N까지 차례대로 %연산자를 사용해서 나눠지는지 확인하고 나머지가 0이면 만든 배열에 순서대로 넣는다.
모든 약수를 구한 후, sort()함수를 사용해 배열을 오름차순 한 후 for문을 돌려 원소값을 차례대로 꺼내 출력한다.
이때, 0이 나오는 경우는 출력되지 않도록 조건문을 걸어준다.
코드
package swea;
import java.util.Arrays;
import java.util.Scanner;
public class Swea_1933 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int N = sc.nextInt();
int[] divisorArr = new int[N+1]; //약수 담을 배열
int cnt = 0;
//N의 약수 구해서 약수 배열에 넣음
int idx = 0;
for(int num=1; num<=N; num++) {
if(N % num == 0) {
divisorArr[idx] = num;
idx++;
}
}
//오름차순
Arrays.sort(divisorArr);
for(int i : divisorArr) {
if(i == 0) continue;
System.out.print(i+" ");
}
}
}