뒤집은 소수

최준호·2021년 8월 5일
0

알고리즘 강의

목록 보기
13/79

설명

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

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

첫 자리부터의 연속된 0은 무시한다.

코드

public class ReverseStringPrimeNumber {
    public static void main(String[] args){
        Scanner in=new Scanner(System.in);
        int input = in.nextInt();
        int[] arr = new int[input];
        for(int i=0; i<input; i++){
            arr[i] = in.nextInt();
        }
        solution(arr);
    }
    public static void solution(int[] arr){
        for(int i =0; i<arr.length; i++){
            StringBuilder sb = new StringBuilder(arr[i]+"");
            int su = Integer.parseInt(sb.reverse().toString());
            boolean flag = true;
            for(int j=2; j<su; j++){
                if(su%j==0){
                    flag = false;
                    break;
                }
            }

            if(flag && su != 1) System.out.print(su+" ");
        }
    }
}

숫자가 입력되어졌을 때 해당 수를 거꾸로 뒤집어서 그 수가 소수인지 판별하는 문제이다. 뒤집어서 계산하는 것은 직접 구현할 수 있지만 나는 StringBuilder의 reverse와 parseInt를 통해 구현했다. reverse는 말 그대로 문자열을 뒤집어 주고 parseInt를 사용한 이유는 문자열을 숫자로 변환시켜줄 때 002의 경우 2로 반환해주기 때문이였다.

그리고 나서 소수를 판별하는 방법은 2부터 자신 전의 숫자까지 모두 나눴을때 0으로 나눠지지 않아야 소수이기 때문에 해당 for문이 한번 더 추가되었고 만약 su가 1이 아니고 나눠지지도 않았다면 해당 숫자를 출력한다.

소수 판별과 문자열을 숫자로 변경하는 방법을 안다면 쉬운 문제!

0개의 댓글

관련 채용 정보