반응형

 

[광고 누르면 오늘의 행운 상승!!]

https://www.acmicpc.net/problem/2023

 

2023번: 신기한 소수

수빈이가 세상에서 가장 좋아하는 것은 소수이고, 취미는 소수를 가지고 노는 것이다. 요즘 수빈이가 가장 관심있어 하는 소수 7331이다. 7331은 소수인데, 신기하게도 733도 소수이고, 73도 소수이고, 7도 소수이다. 즉, 왼쪽부터 1자리, 2자리, 3자리, 4자리 수 모두 소수이다! 수빈이는 이런 숫자를 신기한 소수라고 이름 붙였다. 수빈이는 N자리의 숫자 중에서 어떤 수들이 신기한 소수인지 궁금해졌다. N이 주어졌을 때, 수빈이를 위해 N자리 신

www.acmicpc.net

8자리수 까지 구해야 하기 때문에 전부 돌면 시간초과가 난다.

자리수 마다 소수인지 구별하고 소수가 맞으면 더해주었다.(백트래킹)

제곱근을 구해서 2~제곱근 까지의 숫자중 나누어 떨어지는 것이 있으면 소수가 아니다. 

import java.util.*;


public class 신기한소수 {
	public static StringBuilder sb = new StringBuilder();
	public static int N;
	
	public static void main(String[] args) {
		Scanner sc= new Scanner(System.in);
		N = sc.nextInt();
		 
	    dfs("", 0);
	    System.out.println(sb);
	}
	
	public static void dfs(String s, int cnt) {
		if(cnt == N) {
			sb.append(s + "\n");
			return;
		}
		for (int i = 1; i <= 9; i++) {
			if(isPrimeNumber(Integer.parseInt(s+i))) {
				dfs(s+i, cnt +1);
			}
		}
	}
	public static boolean isPrimeNumber(int num) {
		if(num == 1) return false;
		
		int sqrt = (int)Math.sqrt(num);
		for (int i = 2; i <= sqrt; i++) {
			if(num%i == 0) return false;
		}
		return true;
	}
}

 

반응형

+ Recent posts