[문제]
[풀이방법]
소인수 분해를 할 숫자들 {2,3,5,7,11} 을 집합배열에 넣어두고 제시되는 숫자가 배열 안의 숫자에 나누어 떨어지면 해당 인덱스의 값을 증가시켜 줍니다.
N == 25 라면
2 | 3 | 5 | 7 | 11 |
0 | 0 | 2 | 0 | 0 |
이렇게 인덱스 값이 변하게 됩니다.
for 반복문으로 배열의 인덱스를 돌면서 while 루프를 이용해서 해당 값으로 나누어 떨어지지 않을 때까지 반복해서 나누었습니다.
int[] mods = {2,3,5,7,11};
StringBuffer sf = new StringBuffer();
for (int tc = 1; tc <= T; tc++) {
st = new StringTokenizer(br.readLine());
int N = Integer.parseInt(st.nextToken());
int[] temp = new int[mods.length];
for (int i = 0; i < mods.length; i++) {
while (N % mods[i] == 0) {
temp[i]++;
N = N/mods[i] + N%mods[i];
}
}
sf.append("#" + tc + " ");
for (int i = 0; i < temp.length; i++) {
sf.append(temp[i] + " ");
}
sf.append("\n");
}
'SWEA > D2' 카테고리의 다른 글
[SWEA 1288][D2][JAVA] 새로운 불면증 치료법 (0) | 2019.05.16 |
---|---|
[SWEA 1940][D2][JAVA] 가랏! RC카 (0) | 2019.05.14 |
[SWEA 1946][D2][JAVA] 간단한 압축 풀기 (0) | 2019.05.09 |
[SWEA 1948][D2][JAVA] 날짜 계산기 (0) | 2019.05.08 |
[SWEA 1954][D2][JAVA] 달팽이 숫자 (0) | 2019.05.08 |