[JAVA] 17. 뒤집은 소수

2021. 4. 20. 20:41
728x90

설명

 

N개의 자연수가 입력되면 각 자연수를 뒤집은 후 그 뒤집은 수가 소수이면 그 소수를 출력하는 프로그램을 작성하세요.

예를 들어 32를 뒤집으면 23이고, 23은 소수이다. 그러면 23을 출력한다. 단 910를 뒤집으면 19로 숫자화 해야 한다.

 

예시 입력 1 

9 32 55 62 20 250 370 200 30 100

 

예시 출력 1

23 2 73 2 3

 

 

풀이

 

import java.util.*;

public class Main  {

    public static void main(String[] args) {

        Scanner in = new Scanner(System.in);
        int size =in.nextInt();
        String[] arr = new String[size];
        // 입력받은 수를 저장
        for( int i=0; i<size; i++){
            arr[i] = in.next();
        }

        List<Integer> list = new ArrayList<>();

        for(int i=0; i<size; i++){
        	// 수를 뒤집어 저장
            int tmp = Integer.parseInt(new StringBuilder(arr[i]).reverse().toString());
            Boolean b = isPrime(tmp);

            if(b){
                list.add(tmp);
            }
        }

        for (Integer integer : list) {
            System.out.print(integer+" ");
        }

    }
    
    // 소수인지 판별하는 함수
    public static Boolean isPrime(int num){
        if( num == 1){
            return false;
        }
        for(int i=2; i<num/2; i++){
            if(num%i==0){
                return false;
            }
        }
        return true;
    }
}

 

 

다른 풀이

 

public class Main  {

    public static void main(String[] args) {

        Scanner in = new Scanner(System.in);
        int size =in.nextInt();
        int[] arr = new int[size];
        for( int i=0; i<size; i++){
            arr[i] = in.nextInt();
        }

        List<Integer> list = new ArrayList<>();

        for(int i=0; i<size; i++){
        	// 숫자 뒤집기
            int tmp = arr[i];
            int res = 0;
            while(tmp > 0){
                int t=tmp%10;
                res = res*10+t;
                tmp = tmp/10;
            }
            // 소수 판별
            Boolean b = isPrime(res);

            if( b){
                list.add(res);
            }
        }

        for (Integer integer : list) {
            System.out.print(integer+" ");
        }
    }
    //소수 판별 함수
    public static Boolean isPrime(int num){
        if( num == 1){
            return false;
        }
        for(int i=2; i<num/2; i++){
            if(num%i==0){
                return false;
            }
        }
        return true;
    }
}

 

728x90

'알고리즘 > JAVA' 카테고리의 다른 글

[JAVA] 19. 등수구하기  (0) 2021.04.27
[JAVA] 18. 점수계산  (0) 2021.04.20
[JAVA] 16. 피보나치 수열  (0) 2021.04.20
[JAVA] 15. 가위바위보  (0) 2021.04.20
[JAVA]14. 보이는 학생  (0) 2021.04.20

BELATED ARTICLES

more