뒤집은 소수
문제
나의풀이
import java.util.*;
class Main {
public ArrayList<Integer> solution(int n,int[] arr) {
ArrayList<Integer> answer = new ArrayList<>();
for(int i=0; i<arr.length; i++) {
//숫자뒤집기
String rv = new StringBuilder(Integer.toString(arr[i])).reverse().toString();
int a = Integer.parseInt(rv);
//뒤집힌 숫자의 제곱근
int rt = (int) Math.sqrt(a);
boolean prime = true;
//소수판별
for(int j=2; j<=rt;j++) {
if(a%j == 0) prime = false;
}
if(prime && a>1) answer.add(a);
}
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+ " ");
}
}
}
다른 isPrime을 따로 만든 풀이법
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; //끝자리 321
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+ " ");
}
}
}
풀이방법
- 처음엔 에라토스테네스의 체를 써서 해당 수의 제곱근까지의 배수만 전부 제외 시키는것을 따로 함수를 작성하지 않고 해결했는데,
for문에서 rt까지 포함시켜야되는 사실을 모르고 애먹었다..
2.isPrime을 따로 두고 숫자를 뒤집는것도 stringBuilder를 쓰지않고 일일히 뒤집었다.
tmp가 현재 숫자이고 t가 tmp를 10으로 나눈것의 나머지일때,
t는 무조건 tmp의 끝자리 숫자이므로 그것을 res에
res = res*10 + t로 저장하게되면, 끝자리부터 담긴다.
그리고 tmp를 맨 뒷자리를 제외한 즉,t를 제외한 값인,
tmp/10 (몫)으로 바꿔주면 된다!
핵심키워드
첫번째 풀이에서 판별을 할때, for문을 rt까지 포함시켜서 돌리는것이 중요!
만약 9를 판별한다하면 root = 3으로 3의 배수가 맞는지도 판단해야하는데 2까지만 판단하단 때문에 꼭 포함시켜야한다.
Author And Source
이 문제에 관하여(뒤집은 소수), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@zmdals/뒤집은-소수-kx8j8apu저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)