문제
풀이
입력1 : 뒤집은 수가 소수인지 아닌지 판별할 개수를 입력한다.
입력2 : 각 숫자를 입력한다.
일단, 값을 입력받고 문자열을 뒤집는것 까지는 해결이 되었지만, 이를 정수형으로 바꾸고 소수인지 판별하는 것에 대해서는 어려움을 느꼈다.
for(int i=0;i<n;i++){
arr[i] = kb.nextInt();
}
for(int x : T.solution(n,arr)){
System.out.println(x + " ");
}
for(int x : T.solution(n,arr)){
System.out.println(x + " ");
}
public ArrayList<Integer> solution(int n, int[] arr)
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;
}
}
예를 들어, 123을 입력하면 다음과 같은 순서로 처리가 된다. t = 123%10 = 3t = tmp%10 = 12 % 10 = 2
res = 3*10 + 2 = 32;
tmp = 12/10 = 1;
t = 1%10 = 1;
res = 32*10 + 1 = 321;
tmp = 1/10 = 0;
if(isPrime(res)){
answer.add(res);
}
return answer;
만약 res가 소수이면, ArrayList에 res를 저장한다.
그리고 answer를 반환한다.
소스코드
package algolecture;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Scanner;
public class Main18 {
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) throws IOException {
Main18 T = new Main18();
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 + " ");
}
}
}