-
[JAVA] 알고리즘 문제 - 소수뒤집기Java 알고리즘 문제/자바(Java) 알고리즘 문제풀이 입문 2023. 8. 9. 17:35반응형
소수 뒤집기
설명
N개의 자연수가 입력되면 각 자연수를 뒤집은 후 그 뒤집은 수가 소수이면 그 소수를 출력하는 프로그램을 작성하세요.
예를 들어 32를 뒤집으면 23이고, 23은 소수이다. 그러면 23을 출력한다. 단 910를 뒤집으면 19로 숫자화 해야 한다.
첫 자리부터의 연속된 0은 무시한다.
입력
첫 줄에 자연수의 개수 N(3<=N<=100)이 주어지고, 그 다음 줄에 N개의 자연수가 주어진다.
각 자연수의 크기는 100,000를 넘지 않는다.
출력
첫 줄에 뒤집은 소수를 출력합니다. 출력순서는 입력된 순서대로 출력합니다.
예시 입력
9
32 55 62 20 250 370 200 30 100출력 예시
23 2 73 2 3
import java.util.ArrayList; import java.util.Scanner; public 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> test(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.test(n, arr)) { System.out.printf(x + " "); } } }
이와같이 N 자연수의 갯수와 N개의 자연수가 주어진다.
입력 받은 숫자들을 뒤집은 다음 소수만을 출력하는 프로그램이다.
문자열을 뒤집기 위해서는 10으로 계속 나눠주는 방법을 선택하였다.
public ArrayList<Integer> test(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; }
숫자를 10으로 나눈 나머지는 무조건 1의 자리 숫자이다.
for문을 통해 tmp에 arr[i]번째의 입력값을 집어 넣은 후에 10으로 지속적으로 나누어 숫자를 뒤집에 res에 저장한다.
그런 후에 뒤집은 숫자가 소수인지 아닌지 판별하는 메서드를 하나 생성해보자.
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; }
1은 소수가 아니기에 false를 바로 반환한다.
for문은 2부터 시작하여 뒤집은 숫자전까지 범위를 설정하였다.
2~num사이의 값들을 순차적으로 돌며 나머지가 0인경우 false를 반환하도록 해준다.
해당 메서드를 거쳐 소수가 걸러진 후에 소수라면 true를 반환하게 되고 true를 반환한다면 ArrayLIst에 해당 값을 추가한다.
반응형'Java 알고리즘 문제 > 자바(Java) 알고리즘 문제풀이 입문' 카테고리의 다른 글
[JAVA] 알고리즘 문제 - 등수 구하기 (0) 2023.08.14 [JAVA] 알고리즘 문제 - 점수 계산 (0) 2023.08.14 [JAVA] 알고리즘 문제 - 소수(에라토스테네스 체) (0) 2023.08.09 [JAVA] 알고리즘 문제 - 파보나치수열 (0) 2023.08.09 [JAVA] 알고리즘 문제 - 가위 바위 보 (0) 2023.08.09