
-Code
import java.util.*;
class Solution {
public int solution(int n, int k) {
int answer = 0;
String[] nums = changeFormat(n, k).split("0+");
for (String num : nums) {
if (isPrime(Long.parseLong(num))) {
answer++;
}
}
return answer;
}
// 소수 확인
private static boolean isPrime(Long num) {
if (num < 2) return false;
if (num == 2) return true;
for (long n = 2; n * n <= num; n++) {
if (num % n == 0) {
return false;
}
}
return true;
}
// 진법 변환
private static String changeFormat(int n, int formatNum) {
StringBuilder answer = new StringBuilder();
while(n > 0) {
answer.append(n % formatNum);
n /= formatNum;
}
return answer.reverse().toString();
}
}
로직을 다 짜고나서 진법 변환 후 값이 문제가 좀 있었습니다. Integer.parseInt를 통해 소수 계산을 했지만 틀려서 찾아보니 진법 변환후 0을 기준으로 나눈 수가 21억이 넘는 경우가 있었고 이를 해결하기 위해 long으로 바꾸어서 해결했습니다.
'Beakjoon&프로그래머스 > Java' 카테고리의 다른 글
| [백준/Java] 3060번 욕심쟁이 돼지 (0) | 2026.01.06 |
|---|---|
| [프로그래머스/Java] 소수 찾기 (0) | 2026.01.06 |
| [백준/Java] 15098번 No Duplicates (0) | 2026.01.05 |
| [백준/Java] 2559번 수열 (1) | 2026.01.05 |
| [백준/Java] 1600번 말이 되고픈 원숭이 (0) | 2026.01.05 |