Algorithm/정올 알고리즘

정올_2809 약수(자바) / 수학1

미스터로즈 2021. 6. 25. 14:54

시간&메모리 제한

 

문제

 

입력& 출력

 

문제풀이

package com.jungol;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Arrays;

public class jungol_2809 {

	public static void main(String[] args) throws NumberFormatException, IOException {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		StringBuilder sb = new StringBuilder();
		int[] arr= new int[10000];
		int cnt = 0;
		int N = Integer.parseInt(br.readLine());
		int M = (int)Math.sqrt(N);
		for (int i = 1; i <= M; i++) {
			if(N%i==0) {
				arr[cnt++]=i;
				//25일때 5가 두개 들어가는 것을 방지
				if(N/i !=i) {
					arr[cnt++] = (int)N/i;
				}
			}
		}
		
		Arrays.sort(arr);
		for (int i = 0; i < arr.length; i++) {
			if(arr[i]==0)continue;
			System.out.print(arr[i]+" ");
		}
	}
}

 

- 이 문제는 약수를 구하는 문제입니다.

 

- 약수는 어떤 값으로 나눴을 때 나머지가 0이 되는 것을 찾는 것입니다.

 

- 약수를 효율적으로 구하는 방법은 sqrt()를 이용하여 제곱수를 이용하는 방법입니다.