티스토리 뷰
728x90
코딩테스트 연습 - k진수에서 소수 개수 구하기
문제 설명 양의 정수 n이 주어집니다. 이 숫자를 k진수로 바꿨을 때, 변환된 수 안에 아래 조건에 맞는 소수(Prime number)가 몇 개인지 알아보려 합니다. 0P0처럼 소수 양쪽에 0이 있는 경우 P0처럼 소
programmers.co.kr
풀이
1.
- 0P0처럼 소수 양쪽에 0이 있는 경우
- P0처럼 소수 오른쪽에만 0이 있고 왼쪽에는 아무것도 없는 경우
- 0P처럼 소수 왼쪽에만 0이 있고 오른쪽에는 아무것도 없는 경우
- P처럼 소수 양쪽에 아무것도 없는 경우
- 단, P는 각 자릿수에 0을 포함하지 않는 소수입니다.
-> 이말은 0으로 구분되는 소수를 구하라는 말이다 220033300 이 있다면 0으로 s.split("0")
2. 소수구하기
3. k 진수로 변환
package programmers.level2;
import org.junit.Test;
public class P92335 {
@Test
public void 정답() {
System.out.println(solution(437674, 3));
System.out.println(solution(110011, 10));
}
public int solution(int n, int k) {
int answer = 0;
String convertNum = kBinary(n, k);
String[] str = convertNum.split("0");
for (int i = 0; i < str.length; i++) {
if (str[i].equals("")) {
continue;
}
if (isPrime(Long.parseLong(str[i]))) answer++;
}
return answer;
}
public String kBinary(int n, int k) {
String res = "";
while (n > 0) {
res = n % k + res;
n /= k;
}
return res;
}
public boolean isPrime(long num) {
if (num <= 1) return false;
for (int i = 2; i <= Math.sqrt(num); i++) {
if (num % i == 0) return false;
}
return true;
}
}
'알고리즘 - Java' 카테고리의 다른 글
[프로그래머스] 로또의 최고 순위 와 최저 순위 - Java (0) | 2022.04.09 |
---|---|
[프로그래머스] 다음 큰 숫자 - Java (0) | 2022.03.31 |
[Programmers] 예상 대진표 - Java (0) | 2022.03.31 |
[Programmers] 피로도 - Java (0) | 2022.03.31 |
[Programmers] 큰 수 만들기 - Java (0) | 2022.03.30 |
댓글