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문이 더 들어갔을 뿐이다.
  • 무난한 문제였다.