Array(1, 2차원 배열) - 0206. 뒤집은 소수
private static int[] primes(int n) {
int[] numbers = new int[n + 1];
for(int i=0; i<numbers.length; i++) {
numbers[i] = i;
}
for(int i=2; i<numbers.length; i++) {
if(numbers[i] != 0) {
for(int j=i*2; j<numbers.length; j+=i) {
numbers[j] = 0;
}
}
}
return numbers;
}
private static String solution(int n, String str) {
int[] primes = primes(100000);
String answer = "";
String[] nums = str.split(" ");
for(String s : nums) {
int num = Integer.parseInt(new StringBuilder(s).reverse().toString());
if (primes[num] != 0 && num != 1) {
if (!answer.equals("")) answer += " " + num;
else answer += num;
}
}
return answer;
}
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n = Integer.parseInt(sc.nextLine());
String str = sc.nextLine();
System.out.println(solution(n, str));
}
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+" ");
}
}
해당 문제는 앞서 풀이한 Stirng 문자열
다루기 문제와, Array 배열
다루기 문제를
합쳐 놓은 문제이다.
나의 풀이의 경우 reverse()
와 parseInt()
를 통해 정수를 구하였고, 10만 이하
소수를 모두 찾아 배열
에 저장하고, 해당 인덱스의 값이 존재하는지를 통해 소수 여부를
판별하도록 했다.
강의에서는 while
반복문을 통해 자릿수를 뒤집도록 구현했다. 그 후 해당 정수를 직접
나누어가며 소수인지 판별한다.