코딩테스트 준비/SWEA
[JAVA][D2] 1945. 간단한 소인수분해
AtoZ 개발자
2021. 1. 10. 19:11
반응형
문제
숫자 N은 아래와 같다.
N=2a x 3b x 5c x 7d x 11e
N이 주어질 때 a, b, c, d, e 를 출력하라.
[제약 사항]
N은 2 이상 10,000,000 이하이다.
[입력]
가장 첫 줄에는 테스트 케이스의 개수 T가 주어지고, 그 아래로 각 테스트 케이스가 주어진다.
각 테스트 케이스의 첫 번째 줄에 N 이 주어진다.
[출력]
출력의 각 줄은 '#t'로 시작하고, 공백을 한 칸 둔 다음 정답을 출력한다.
(t는 테스트 케이스의 번호를 의미하며 1부터 시작한다.)
예시
풀이
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.ArrayList;
public class Solution {
public static void main(String[] args) {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int[] nums = {2,3,5,7,11};
try {
int T = Integer.parseInt(br.readLine());
// 테스트케이스 반복
for (int i = 1; i <= T; i++) {
ArrayList<Integer> list = new ArrayList<Integer>();
StringBuilder sb = new StringBuilder();
int num = Integer.parseInt(br.readLine());
for(int j=0;j<nums.length;j++) {
int count=0;
//나머지 있는경우에는 소인수분해가 되지 않는경우
while(num%nums[j]==0) {
num=num/nums[j];
count++;
}
list.add(count);
}
sb.append("#"+i+" ");
for(int a:list) {
sb.append(a+" ");
}
System.out.println(sb.toString());
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
반응형