본문 바로가기
알고리즘 문제풀이/인프런

[알고리즘] 2-6 뒤집은 소수(인프런 자바(Java) 알고리즘 문제풀이 : 코딩테스트 대비 강의)

by jeonghaemin 2021. 5. 13.
728x90

인프런의 자바(Java) 알고리즘 문제풀이 : 코딩테스트 대비 강의를 수강하며 간략한 문제 설명, 예습 풀이 코드, 강의에서 설명하는 풀이 코드를 정리하고 있습니다.

내 풀이

  • 숫자를 뒤집는 방법으로 정수를 문자열로 변환하여 문자열을 뒤집은 후 다시 정수로 변환
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.List;

public class Main2_6 {

    //소수 판별 메서드
    public static boolean isPrime(int num) {
        if (num == 1) { //1은 소수가 아니기 때문
            return false;
        }

        for (int j = 2; j < num; j++) {
            if (num%j == 0) {
                return false;
            }
        }

        return true;
    }

    public static List<Integer> solution(int n, int[] arr) {
        List<Integer> retList = new ArrayList<>();

        for (int i = 0; i < n; i++) {
            //정수를 뒤집는 부분
            arr[i] = Integer.parseInt(new StringBuilder(String.valueOf(arr[i])).reverse().toString());

            if (isPrime(arr[i])) {
                retList.add(arr[i]);
            }
        }

        return retList;
    }


    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

        int n = Integer.parseInt(br.readLine());
        int[] arr = new int[n];

        String[] s = br.readLine().split(" ");
        for (int i = 0; i < n; i++) {
            arr[i] = Integer.parseInt(s[i]);
        }

        List<Integer> list = solution2(n, arr);
        for (int i : list) {
            System.out.print(i + " ");
        }
    }
}

강의 풀이

  • 정수를 뒤집는 방법으로 사칙연산을 이용
import java.util.*;
class Main {    
    public boolean isPrime(int num){
        if(num==1) return false;
        for(int i=2; i<num; i++){
            if(num%i==0) return false;
        }
        return true;
    }

    public ArrayList<Integer> solution(int n, int[] arr){
        ArrayList<Integer> answer = new ArrayList<>();
        for(int i=0; i<n; i++){
            int tmp=arr[i];
            int res=0;
            //정수를 뒤집는 부분
            while(tmp>0){
                int t=tmp%10;
                res=res*10+t;
                tmp=tmp/10;
            }
            if(isPrime(res)) answer.add(res);
        }
        return answer;
    }
    public static void main(String[] args){
        Main T = new Main();
        Scanner kb = new Scanner(System.in);
        int n=kb.nextInt();
        int[] arr=new int[n];
        for(int i=0; i<n; i++){
            arr[i]=kb.nextInt();
        }
        for(int x : T.solution(n, arr)){
            System.out.print(x+" ");
        }
    }
}

댓글