// 숫자 7193 은 7193 도 소수이고,
// 719, 71, 7 도 각각 소수이다.
// n 이 주어졌을 때, n 자리 수 중에 위와 같은 소수를 찾는 프로그램을 작성하세요.
// 입출력 예시
// 입력 n: 3
// 출력: 233, 239, 293, 311, 313, 317, 373, 379, 593, 599, 719, 733, 739, 797
public class Main {
public static ArrayList<Integer> result;
public static ArrayList<Integer> solution(int n) {
result = new ArrayList<>();
int[] primes = {2, 3, 5, 7}; // 1의 자리 소수
for (int i = 0; i < primes.length; i++) {
backtracking(primes[i], n, 1);
}
return result;
}
private static void backtracking(int prime, int n, int cnt) {
if (n == cnt) {
result.add(prime);
return;
}
for (int i = 0; i < 10; i++) {
if (i == 2 || i == 5) { //소수에 대한 프루닝..
continue;
}
int target = prime * 10 + i;
if (isPrime(target)) { //소수인지 프루닝..
backtracking(target, n, cnt + 1);
}
}
}
private static boolean isPrime(int target) {
for (int i = 2; i <= Math.sqrt(target); i++) {
if (target % i == 0) {
return false;
}
}
return true;
}
public static void main(String[] args) {
// Test code
System.out.println(solution(3));
System.out.println();
System.out.println(solution(4));
}
}
'코딩 테스트 > 코딩 테스트' 카테고리의 다른 글
분리 가능한 그래프인지 판단하기 - 인접 노드 플래그 판단 (0) | 2024.01.11 |
---|---|
뱀게임 (0) | 2023.11.08 |
문자열 압축 해제문제로 살펴본 INTP와 재귀 알고리즘의 상관관계 (0) | 2023.09.18 |
백준 2155 (큐, 큐 복사, 홀수 짝수일 경우 판단) (0) | 2021.11.09 |
// 숫자 7193 은 7193 도 소수이고,
// 719, 71, 7 도 각각 소수이다.
// n 이 주어졌을 때, n 자리 수 중에 위와 같은 소수를 찾는 프로그램을 작성하세요.
// 입출력 예시
// 입력 n: 3
// 출력: 233, 239, 293, 311, 313, 317, 373, 379, 593, 599, 719, 733, 739, 797
public class Main {
public static ArrayList<Integer> result;
public static ArrayList<Integer> solution(int n) {
result = new ArrayList<>();
int[] primes = {2, 3, 5, 7}; // 1의 자리 소수
for (int i = 0; i < primes.length; i++) {
backtracking(primes[i], n, 1);
}
return result;
}
private static void backtracking(int prime, int n, int cnt) {
if (n == cnt) {
result.add(prime);
return;
}
for (int i = 0; i < 10; i++) {
if (i == 2 || i == 5) { //소수에 대한 프루닝..
continue;
}
int target = prime * 10 + i;
if (isPrime(target)) { //소수인지 프루닝..
backtracking(target, n, cnt + 1);
}
}
}
private static boolean isPrime(int target) {
for (int i = 2; i <= Math.sqrt(target); i++) {
if (target % i == 0) {
return false;
}
}
return true;
}
public static void main(String[] args) {
// Test code
System.out.println(solution(3));
System.out.println();
System.out.println(solution(4));
}
}
'코딩 테스트 > 코딩 테스트' 카테고리의 다른 글
분리 가능한 그래프인지 판단하기 - 인접 노드 플래그 판단 (0) | 2024.01.11 |
---|---|
뱀게임 (0) | 2023.11.08 |
문자열 압축 해제문제로 살펴본 INTP와 재귀 알고리즘의 상관관계 (0) | 2023.09.18 |
백준 2155 (큐, 큐 복사, 홀수 짝수일 경우 판단) (0) | 2021.11.09 |