문제 링크
https://www.acmicpc.net/problem/14232
접근 방법
2부터 시작해서 효빈이가 들 수 있는 무게까지 반복문을 돌립니다.
소스 코드
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class Main {
public static void main(String[] args) throws NumberFormatException, IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringBuilder sb = new StringBuilder();
long k = Long.parseLong(br.readLine());
int cnt = 0;
for (int i = 2; i <= k; i++) {
if (i >= 1000000) {
sb.append(k);
cnt++;
break;
}
while (k % i == 0) {
k /= i;
cnt++;
sb.append(i).append(" ");
}
}
System.out.println(cnt);
System.out.println(sb);
}
}
코드 설명
훔칠 수 있는 보석의 무게가 곱이기 때문에 나누어지는지 판단합니다.
나누어진다면 들 수 있는 무게를 줄여줍니다.
소인수를 구하는 것이기 때문에 106까지만 계산하고,
106 까지 반복문을 돌렸는데도 들 수 있는 무게가 남았다면 훔쳐갈 수 있는 보석 리스트에 추가해 줍니다.
처음에는 소인수이면 소수여야 하므로 소수인지부터 확인해 줘야겠다고 생각했었지만
2부터 나눠주기 때문에 그럴 필요가 없다는 것을 깨달았습니다.
'코딩테스트 > 백준' 카테고리의 다른 글
[백준 JAVA] 1033. 칵테일 (0) | 2024.07.16 |
---|---|
[백준 JAVA] 2824. 최대공약수 (0) | 2024.07.11 |
[백준 JAVA] 1456. 거의 소수 (0) | 2024.07.03 |
[백준 C++] 30867. 과제가 너무 많아 (0) | 2024.05.22 |
[백준 C++] 17298. 오큰수 (0) | 2024.04.17 |