ezhoon

[인프런] 02_06 뒤집은 소수 본문

[Java] 인프런 문제풀이/Array(배열)

[인프런] 02_06 뒤집은 소수

ezhoon 2022. 1. 21. 10:34

📖  문제


  1. N개의 자연수 입력되면 그 자연수를 뒤집는다.
    • 소수이면 출력하며 소수가 아닌경우는 빈공간으로 만든다.
  2. 예로 32를 뒤집으면 23이고 23은 소수이다. 이런 경우에 출력한다는 것이다.
  3. 첫 자리부터의 연속된 0을 무시한다.

출력 예시

 

✍️  이해


  • 첫 줄에 자연수의 개수 N을 입력한다.
    • N의 개수만큼 자연수를 배열에 입력한다.
  • 배열에 자연수들을 reverse().toString() 으로 뒤집어준다.
StringBuilder(" ? ").reverse().toString() 

?에는 String 값만 들어갈 수 있으므로 배열 입력 받을 때 String 배열로 시작한다.
  • boolean을 이용해서 소수이면 true 반환 후 answer.add(값) 넣어주면 된다.

 

 

⚠️ 주의사항


  • reverse().toString() 을 사용할려면 어떻게 처리 할지
  • 소수 구분 방법
  • boolean

 

✏️  풀이


import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.StringTokenizer;

public class Java_02_06 {

    public ArrayList<Integer> solution(int N, String[] temp) {
        ArrayList<Integer> answer = new ArrayList<>();

        int[] number = new int[N];

        for (int i = 0; i < N; i++) {
            number[i] =Integer.parseInt(new StringBuilder(temp[i]).reverse().toString()); // 입력 받은 값 reverse로 뒤집어 준 다음 정수형 변환 해서 number 저장

            int res = number[i];

            if(isPrime(res)) answer.add(res); // isPrime에 res 값 넘기고 return 된 값이 true 면 answer 배열에 res 객체 추가
        }

        return answer;
    }

    public boolean isPrime(int num) { // number 객체의 값들 소수 체크
        if (num == 1) return false; // 1이면 소수가 아니니 바로 return false
        for (int i = 2; i < num; i++) {
            if (num % i == 0) return false;
        }
        return true;
    }

    public static void main(String[] args) throws IOException {

        Java_02_06 T = new Java_02_06();

        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

        int N = Integer.parseInt(br.readLine());
        StringTokenizer st = new StringTokenizer(br.readLine(), " ");

        String[] temp = new String[N];
        for (int i = 0; i < N; i++) {
            temp[i] = st.nextToken();
        }
        for (int x : T.solution(N, temp)) System.out.print(x + " ");
    }
}

출력

Comments