Algorithm/inflearn

★뒤집은 소수

마닐라 2021. 9. 6. 21:09

import java.util.ArrayList;
import java.util.Scanner;

class Main {

    public boolean isPrime(int num) {
        if(num==1) return false;
        for(int i = 2; i < num; i++) {
            //나눠지는 숫자가 있으면 소수가 아님
            if(num%i==0) return false;
        }
        return true;
    }


    public ArrayList<Integer> solution(int n, int[] arr) {
        ArrayList<Integer> answer = new ArrayList<>();

        for(int i = 0; i < n; i++) {
            int tmp = arr[i];
            //숫자 뒤집기
            int res = 0;
            while(tmp > 0){
                int t = tmp % 10;
                res = res * 10 + t;
                tmp = tmp / 10;
            }
            if(isPrime(res)) {
                answer.add(res);
            }
        }
        //321일 때 t = 1 res = 0 * 0 + 1 = 1 tmp = 32
        //32가 되고 t = 2 res = 1 * 10 + 2 = 12 tmp = 3
        //3이 되고 t = 3 res = 12 * 10 + 3 = 123 tmp = 0
        //res가 뒤집힌 숫자이므로 이 숫자를 기준으로 소수를 판별

        return answer;
    }

    public static void main(String[] args) {
        Main T = new Main();
        Scanner kb = new Scanner(System.in);

        int n = kb.nextInt();
        int[] arr = new int[n];

        for(int i = 0; i < n; i++){
            arr[i] = kb.nextInt();
        }

        for(int x : T.solution(n, arr)) {
            System.out.print(x+ " ");
        }


    }
}

 

'Algorithm > inflearn' 카테고리의 다른 글

등수구하기  (0) 2021.09.08
점수계산  (0) 2021.09.08
★소수(에라토스테네스 체)  (0) 2021.09.06
피보나치 수열  (0) 2021.09.06
가위 바위 보  (0) 2021.09.06