개발놀이터
2-6. 뒤집은 소수 본문
package 배열1차원2차원.뒤집은소수2다시6.my;
import java.util.Scanner;
public class Main {
/**
* -내 풀이-
* 기본적으로 잘 풀었다.
*
* --피드백--
* 코드가 좀 더럽다.
* 소수인지 아닌지 확인하고 boolean 으로 리턴하는 함수를 하나 만들어서 출력하는게 좀 더 깔끔해 보이긴 하다.
*
* -선생님의 풀이-
* 숫자를 뒤집는 것이 개인적으로 맘에 안든다. 내 방식이 좀 더 깔끔해 보인다.
*/
public static void main(String[] args) {
Scanner kb = new Scanner(System.in);
int num = kb.nextInt();
int[] arr = new int[num];
for (int i = 0; i < num; i++) {
arr[i] = kb.nextInt();
}
System.out.println(solution(arr));
}
private static String solution(int[] arr) {
String answer = "";
String[] reverse = new String[arr.length];
for (int i = 0; i < arr.length; i++) {
reverse[i] = String.valueOf(arr[i]);
reverse[i] = new StringBuilder(reverse[i]).reverse().toString();
arr[i] = Integer.parseInt(reverse[i]);
}
for (int i = 0; i < arr.length; i++) {
for (int j = 2; j <= arr[i]; j++) {
if (arr[i] % j == 0) {
if (j < arr[i]) {
break;
}
answer += arr[i] + " ";
}
}
}
return answer;
}
}
package 배열1차원2차원.뒤집은소수2다시6.teacher;
import java.util.ArrayList;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
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 : solution(n, arr)) {
System.out.println(x + " ");
}
}
private static 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;
res = res * 10 + t;
tmp = tmp / 10;
}
if (isPrime(res)) answer.add(res);
}
return answer;
}
private static boolean isPrime(int num) {
if (num == 1) {
return false;
}
for (int i = 2; i < num; i++) {
if (num % i == 0) {
return false;
}
}
return true;
}
}
package 배열1차원2차원.뒤집은소수2다시6.my;
import java.util.Scanner;
public class Refactoring {
/**
* -내 풀이-
* 기본적으로 잘 풀었다.
*
* --피드백--
* 코드가 좀 더럽다.
* 소수인지 아닌지 확인하고 boolean 으로 리턴하는 함수를 하나 만들어서 출력하는게 좀 더 깔끔해 보이긴 하다.
*
* -선생님의 풀이-
* 숫자를 뒤집는 것이 개인적으로 맘에 안든다. 내 방식이 좀 더 깔끔해 보인다.
*/
public static void main(String[] args) {
Scanner kb = new Scanner(System.in);
int num = kb.nextInt();
int[] arr = new int[num];
for (int i = 0; i < num; i++) {
arr[i] = kb.nextInt();
}
System.out.println(solution(arr));
}
private static String solution(int[] arr) {
String answer = "";
String[] reverse = new String[arr.length];
for (int i = 0; i < arr.length; i++) {
reverse[i] = String.valueOf(arr[i]);
reverse[i] = new StringBuilder(reverse[i]).reverse().toString();
arr[i] = Integer.parseInt(reverse[i]);
if (isPrime(arr[i])) {
answer += arr[i] + " ";
}
}
// for (int i = 0; i < arr.length; i++) { 이중 for 문에 이중 if 문... 진짜 더럽긴 하다..
// for (int j = 2; j <= arr[i]; j++) { 실제로 이렇게 적으면 감점 먹을듯
// if (arr[i] % j == 0) {
// if (j < arr[i]) {
// break;
// }
// answer += arr[i] + " ";
// }
// }
// }
return answer;
}
private static boolean isPrime(int num) {
if (num == 1) {
return false;
}
for (int i = 2; i < num; i++) {
if (num % i == 0) {
return false;
}
}
return true;
}
}
숫자를 뒤집는 것은 내 풀이가 좀 더 깔끔하고 소수를 찾는 부분은 선생님 풀이가 좀 더 깔끔했기 때문에 리팩토링을 진행했다. 맨 위부터 내 풀이, 선생님 풀이, 리팩토링 순서이다.
'기타 > 코딩테스트' 카테고리의 다른 글
2-8. 등수 구하기 (0) | 2023.02.14 |
---|---|
2-7. 점수 계산 (0) | 2023.02.14 |
2-5. 소수의 개수 (0) | 2023.02.14 |
2-4. 피보나치 수열 (0) | 2023.02.14 |
2-3. 가위바위보 (0) | 2023.02.14 |