보라코딩

백준 자바 :: 신기한 소수 (DFS) 본문

백준(java)

백준 자바 :: 신기한 소수 (DFS)

new 보라 2024. 7. 2. 20:38

 

 

 

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