6. 뒤집은 소수
설명
N개의 자연수가 입력되면 각 자연수를 뒤집은 후 그 뒤집은 수가 소수이면 그 소수를 출력하는 프로그램을 작성하세요.
예를 들어 32를 뒤집으면 23이고, 23은 소수이다. 그러면 23을 출력한다. 단 910를 뒤집으면 19로 숫자화 해야 한다.
첫 자리부터의 연속된 0은 무시한다.
입력
첫 줄에 자연수의 개수 N(3<=N<=100)이 주어지고, 그 다음 줄에 N개의 자연수가 주어진다.
각 자연수의 크기는 100,000를 넘지 않는다.
출력
첫 줄에 뒤집은 소수를 출력합니다. 출력순서는 입력된 순서대로 출력합니다.
예시 입력 1
9
32 55 62 20 250 370 200 30 100
예시 출력 1
23 2 73 2 3
풀이
import java.util.ArrayList;
import java.util.Scanner;
public class Main {
public boolean isPrime(int n){
if(n == 1) return false;
for(int i=2; i<n; i++){
if(n % 2 == 0) return false;
}
return true;
}
public static void main(String[] args){
Main main = new Main();
Scanner in = new Scanner(System.in);
int n = in.nextInt();
int[] arr = new int[n];
ArrayList<Integer> answer = new ArrayList<>();
for(int i=0; i<n; i++){
arr[i] = in.nextInt();
}
for(int i=0; i<arr.length; i++){
int temp = arr[i];
int res = 0;
while(temp > 0){
int t = temp % 10;
res = res * 10 + t;
temp = temp / 10;
}
if(main.isPrime(res)) answer.add(res);
}
for(int num : answer){
System.out.print(num + " ");
}
}
}
풀이 과정
- 가끔 코테 풀다보면 String 형식 말고 int 형으로 푸는 문제가 나오기 때문에, StringBuilder 를 안쓰는 방법으로 구현해보려했다.
- 숫자를 뒤집는 방법은 아래와 같은 방법을 쓰면 된다.
- 만약 StringBuilder로 구현했다면 StringBuilder의 reverse() 함수를 사용하면 된다.
while(temp > 0){
int t = temp % 10;
res = res * 10 + t;
temp = temp/10;
}
- 그 후 뒤집은 숫자를 가지고 소수 체크를 한다.
- 1 은 소수가 아니므로 false / 2 부터 입력값 루프를 돌면서 나눴을때 0 이 되면 false 아니면 true(소수) 이다.
- 마지막으로 해당 값들을 모두 출력하면 된다
'스터디 > 코테 문제풀이' 카테고리의 다른 글
21. 봉우리 (0) | 2024.03.04 |
---|---|
18. 점수 계산 (0) | 2024.02.28 |
16. 소수 (0) | 2024.02.28 |
9. Palindrome Number (0) | 2024.01.16 |
1. Two Sum (0) | 2024.01.14 |