시간&메모리 제한

문제

입력& 출력


문제풀이
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()를 이용하여 제곱수를 이용하는 방법입니다.
'Algorithm > 정올 알고리즘' 카테고리의 다른 글
| 정올_1002 최대공약수, 최소공배수(자바) / 수학1 (0) | 2021.06.27 | 
|---|---|
| 정올_1658 최대 공약수와 최소 공배수(자바) / 수학1 (0) | 2021.06.26 | 
| 정올_1402 약수 구하기(자바) / 수학1 (0) | 2021.06.24 | 
| 정올_1071 약수와 배수(자바) / 수학1 (0) | 2021.06.23 | 
| 정올_1430 숫자의 개수(자바) / 수학1 (0) | 2021.06.22 |