개발에 AtoZ까지

[JAVA][D2] 1945. 간단한 소인수분해 본문

코딩테스트 준비/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();
		}
	}
}
반응형
Comments