시간&메모리 제한
문제
입력& 출력
문제풀이
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 |