뒤집은 소수

최준호·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이 아니고 나눠지지도 않았다면 해당 숫자를 출력한다.

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

profile
코딩을 깔끔하게 하고 싶어하는 초보 개발자 (편하게 글을 쓰기위해 반말체를 사용하고 있습니다! 양해 부탁드려요!) 현재 KakaoVX 근무중입니다!

0개의 댓글