본문 바로가기
Computer Science/Algorithm

[Inflearn] 뒤집은 소수

by 코딩맛 2022. 11. 26.

인프런의 자바(Java)알고리즘 문제풀이 입문:코딩테스트 대비 강좌의 강의를 보고 문제 해설을 작성해보았습니다.

 

섹션2. Array(1,2차원 배열)의 6. 뒤집은 소수 강의편 입니다.

 

설명

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

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

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

 

입력

첫 줄에 자연수의 개수 N(3<=N<=100)이 주어지고, 그 다음 줄에 N개의 자연수가 주어진다.

각 자연수의 크기는 100,000를 넘지 않는다.

 

출력

첫 줄에 뒤집은 소수를 출력합니다. 출력순서는 입력된 순서대로 출력합니다.

 

import java.util.Scanner;

public class 뒤집은_소수 {
	public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();
        int[] arr = new int[n];
        for (int i = 0; i < arr.length; i++) {
            arr[i] = sc.nextInt();
        }
        solution(n,arr);
        System.out.println();
    }

    private static void solution(int n, int[] arr) {
        for (int i = 0; i < n; i++) {
            int num = arr[i];
            StringBuilder tmp = new StringBuilder(""+num);

            String s = tmp.reverse().toString();
            int tmpNum = Integer.parseInt(s);

            if(isPrime(tmpNum)) {
            	System.out.print(tmpNum+" ");
                
            }    
        }
    }
    
    private static boolean isPrime(int tmpNum) {
    	if(tmpNum==1) {
    		return false;

    	}
    	for(int i=2; i<tmpNum;i++) {
    		if(tmpNum%i == 0) {
    			return false;
    		}
    	}
    	return true;
    }
}

>> 해설

n개의 자연수 만큼 자연수를 입력 받고 각 자연수를 뒤집어야 하는데 이때 문자열을 연산에 쓰이는 StringBuilder를 사용하였다.

arr배열에 저장된 자연수를 하나씩 꺼내서 num 변수에 담고 해당 num으로 초기화된 tmp객체를 생성한다.

StringBuilder에 내장된 .reverse() 메서드를 사용하여 숫자를 뒤집어주고 문자열화 시킨다.

그리고 다시 그 값을 자연수로 변경한다. 

여기까지 했다면 자연수를 뒤집는데 성공한 것이다.

 

이제 그 뒤집어진 자연수가 소수인지 판별할 차례이다.

뒤집어진 자연수를 인수로 isPrime 메서드를 호출한다. 

자연수가 1이면 소수가 아니기 때문에 false 값을 리턴한다.

 

소수는 1과 자기 자신으로만 나눠 떨어지는 수이기 때문에 i를 2부터 자연수 전까지 반복하면서 i값으로 나눴을 때 나머지가 0이되면 소수가 아니므로 이 때도 false값을 리턴한다. 

 

이 이외에는 소수이므로 true값을 리턴한다. 

 

그러고 isPrime 메서드를 호출한 solution 메서드로 돌아와서 boolean값이 true 일때만 tmpNum값을 출력한다.

'Computer Science > Algorithm' 카테고리의 다른 글

[Inflearn] 등수구하기  (0) 2022.12.11
[Inflearn] 점수계산  (0) 2022.12.03
[Inflearn] 소수  (0) 2022.11.23
[Inflearn] 피보나치 수열  (0) 2022.11.20
[Inflearn] 가위 바위 보  (0) 2022.11.13