[JAVA] 17. 뒤집은 소수
2021. 4. 20. 20:41
728x90
설명
N개의 자연수가 입력되면 각 자연수를 뒤집은 후 그 뒤집은 수가 소수이면 그 소수를 출력하는 프로그램을 작성하세요.
예를 들어 32를 뒤집으면 23이고, 23은 소수이다. 그러면 23을 출력한다. 단 910를 뒤집으면 19로 숫자화 해야 한다.
예시 입력 1
9 32 55 62 20 250 370 200 30 100
예시 출력 1
23 2 73 2 3
풀이
import java.util.*;
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
int size =in.nextInt();
String[] arr = new String[size];
// 입력받은 수를 저장
for( int i=0; i<size; i++){
arr[i] = in.next();
}
List<Integer> list = new ArrayList<>();
for(int i=0; i<size; i++){
// 수를 뒤집어 저장
int tmp = Integer.parseInt(new StringBuilder(arr[i]).reverse().toString());
Boolean b = isPrime(tmp);
if(b){
list.add(tmp);
}
}
for (Integer integer : list) {
System.out.print(integer+" ");
}
}
// 소수인지 판별하는 함수
public static Boolean isPrime(int num){
if( num == 1){
return false;
}
for(int i=2; i<num/2; i++){
if(num%i==0){
return false;
}
}
return true;
}
}
다른 풀이
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
int size =in.nextInt();
int[] arr = new int[size];
for( int i=0; i<size; i++){
arr[i] = in.nextInt();
}
List<Integer> list = new ArrayList<>();
for(int i=0; i<size; i++){
// 숫자 뒤집기
int tmp = arr[i];
int res = 0;
while(tmp > 0){
int t=tmp%10;
res = res*10+t;
tmp = tmp/10;
}
// 소수 판별
Boolean b = isPrime(res);
if( b){
list.add(res);
}
}
for (Integer integer : list) {
System.out.print(integer+" ");
}
}
//소수 판별 함수
public static Boolean isPrime(int num){
if( num == 1){
return false;
}
for(int i=2; i<num/2; i++){
if(num%i==0){
return false;
}
}
return true;
}
}
728x90
'알고리즘 > JAVA' 카테고리의 다른 글
[JAVA] 19. 등수구하기 (0) | 2021.04.27 |
---|---|
[JAVA] 18. 점수계산 (0) | 2021.04.20 |
[JAVA] 16. 피보나치 수열 (0) | 2021.04.20 |
[JAVA] 15. 가위바위보 (0) | 2021.04.20 |
[JAVA]14. 보이는 학생 (0) | 2021.04.20 |