보라코딩
백준 자바 :: 신기한 소수 (DFS) 본문

import java.util.*;
public class Main{
static int N;
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
N = sc.nextInt();
// 일의 자리 소수는 2, 3, 5, 7 이므로 여기서 부터 시작! (한자리수 시작)
DFS(2, 1);
DFS(3, 1);
DFS(5, 1);
DFS(7, 1);
}
static void DFS(int num, int jarisu){
if(jarisu == N) {
if(isPrime(num)){
System.out.println(num);
}
return; // 중요!
}
for (int i = 1; i < 10; i++){
if(i % 2 == 0) continue; // 짝수면 더 이상 탐색할 필요 없음
if(isPrime(num * 10 + i)){ // 소수 이면 재귀로 자리수 늘리기
DFS(num * 10 + i, jarisu + 1);
}
}
}
static boolean isPrime(int num){
for(int i = 2; i <= Math.sqrt(num); i++){ // 루트에 주의!
if(num % i == 0){
return false;
}
}
return true;
}
}
'백준(java)' 카테고리의 다른 글
백준 자바 :: 바이러스 (0) | 2024.07.17 |
---|---|
백준 자바 :: DFS와 BFS (0) | 2024.07.04 |
백준 자바 :: 연결요소의 개수 (0) | 2024.07.01 |
백준 문제집 (0) | 2024.04.08 |
백준 :: 완전탐색 (0) | 2024.01.16 |