CodeWars 여든 번째 문제
Updated:
Backwards Read Primes
public static String backwardsPrime(long start, long end) {
List<String> list = new ArrayList<String>();
while(start <= end) {
if(isBacksPrime(start)) {
list.add(String.valueOf(start));
}
start++;
}
return String.join(" ", list);
}
private static boolean isBacksPrime(long start) {
if(start < 12 || !isPrime(start)) {
return false;
}
long backPrime = backNumber(start);
if(backPrime == start || !isPrime(backPrime)) {
return false;
}
return true;
}
private static long backNumber(long start) {
long back = 0;
while(start > 0) {
back = back * 10 + start % 10;
start = start / 10;
}
return back;
}
private static boolean isPrime(long start) {
if(start <= 1) {
return false;
}
for(int i = 2; i <= (int) Math.sqrt(start); i++) {
if(start % i == 0) {
return false;
}
}
return true;
}
- 지금까지 만들어왔던 소수 판별과 숫자 역순으로 만드는 알고리즘을 잘 이해하고 있었기 때문에 충분히 풀 수가 있었다.
- 단순히 중간에 12보다 크고 역순의 숫자랑 기존의 숫자랑 같은 소수도 안된 다는 조건이 붙어 if문이 더 들어갔을 뿐이다.
- 무난한 문제였다.