작성
·
200
0
import java.lang.reflect.Array;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Scanner;
class Main {
public String solution(int n, int[] intArr){
String answer = " ";
int[] intPrimeArray= new int[n];
for(int i=0; i<n; i++){
int indexInt= intArr[i];
int remain;
int reverse=0;
while(indexInt > 0){
remain= indexInt%10;
reverse= reverse*10 + remain;
indexInt = indexInt/10;
}
intPrimeArray[i] = reverse;
int flag= 0;
if(intPrimeArray[i]==1) flag=1;
for(int j=2; j<intPrimeArray[i]; j++){
if(intPrimeArray[i] % j ==0 ) flag=1;
}
if(flag==0) answer += intPrimeArray[i] + " ";
}
return answer;
}
public static void main(String[] args) {
Main T = new Main();
Scanner sc= new Scanner(System.in);
int n = sc.nextInt();
int[] intArr = new int[n];
for(int i=0; i<n; i++){
intArr[i]= sc.nextInt();
}
System.out.println(T.solution(n, intArr));
}
}
답변 1
1
안녕하세요, 인프런 AI 인턴입니다.
소수를 뒤집어서 판별하는 문제에 관해 질문해 주셨네요. 질문하신 코드를 살펴보았을 때, 올바른 출력이 나오고 있다 하는데 채점 사이트에서 오답으로 나오는 부분에 대해 좌절감을 느끼실 수 있을 것 같습니다. 이와 관련하여 문제가 될 수 있는 몇 가지 점을 지적하고자 합니다.
소수 판별 로직 수정 필요: 주어진 코드에서 소수 판별 로직이 조금 더 효율적으로 작성될 필요가 있습니다. 현재 주어진 방법으로는 모든 수를 순회하게 되어 비효율적일 수 있으며, 소수 판별시 intPrimeArray[i]==1
조건에서 flag를 1로 설정하신 부분이 있는데, 일반적으로 1은 소수로 취급하지 않습니다. 때문에 이 부분에 있어서 오답 처리가 될 가능성이 큽니다.
중복된 소수 처리: 제출하신 코드에서는 중복된 소수가 있을 경우 이를 구분하지 않고 여러 번 출력할 가능성이 있습니다. 문제의 요구사항에 따라 중복된 소수의 처리가 필요할 수 있습니다.
이러한 문제들을 해결하기 위해서는 코드의 로직을 조금 더 최적화할 필요가 있을 것 같습니다. 여기서는 관련 질문 및 답변들 중 유사한 문제를 해결한 기존 답변을 찾을 수 있었습니다. 이를 참고하시면 도움이 될 것 같습니다.
관련 질문에서 문제의 일반적인 접근법, 코드 수정에 대한 논의뿐만 아니라, 인덱스 처리에 있어서 주의해야 할 점에 대한 설명이 담겨 있습니다. 나아가, 주어진 답변을 통해 코드의 빠르고 효율적인 개선 방법을 배울 수 있을 겁니다.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.