[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+" ");
        }
    }   
}

카테고리:

업데이트: