알고리즘/문자열, 정렬

[알고리즘] 뒤집은 소수 with Java, 숫자뒤집기에 대한 생각

VIPeveloper 2022. 3. 5. 12:47
728x90
반응형

주말 맞이 알고리즘~ 정리하면서 푸니까 좀 더 수월한 느낌이다.

오늘 배운 것

1. 숫자 뒤집기

. 나는 stringbuilder 변환 후 reverse() 함수를 사용했다.

. 강의에서는 %, /를 이용했다.

int i1 = Integer.parseInt(arr[j]);
int res = 0;
while(i1>0){
    int t = i1%10;
    res = (res*10) + t;
    i1 = i1/10;
}

2. 문제 풀이

import java.util.Scanner;

public class Main {

    public static void main(String[] args) {
        Scanner kb = new Scanner(System.in);
        int i = kb.nextInt();
        String[] arr = new String[i];
        for (int j = 0; j < arr.length; j++) {
            arr[j] = kb.next();
        }
        solution(i,arr);
        System.out.println();
        solution2(i,arr);
    }

    private static void solution(int i, String[] arr) {
        for (int j = 0; j < arr.length; j++) {
            int i1 = Integer.parseInt(arr[j]);
            StringBuilder tmp = new StringBuilder(""+i1);

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

            if(isPrime(i2)){
                System.out.print(i2+" ");
            }
        }
    }
    private static void solution2(int i,String [] arr){
        for (int j = 0; j < arr.length; j++) {
            int i1 = Integer.parseInt(arr[j]);
            int res = 0;
            while(i1>0){
                int t = i1%10;
                res = (res*10) + t;
                i1 = i1/10;
            }
            if(isPrime(res)){
                System.out.print(res+" ");
            }
        }
    }

    private static boolean isPrime(int i2) {
        if(i2==1) {
            return false;
        }
            for (int i = 2; i < i2; i++) {
                if(i2%i==0){
                    return false;
                }
            }
        return true;
    }
}
728x90
반응형