PS

백준 2023번 [신기한 소수]

binning 2025. 2. 18. 17:35

인접 리스트를 미리 받아놓지 않고 재귀 함수를 돌리면서 다음 깊이를 찾아가는 DFS

같은 조건으로 크기를 키워갈 때 사용 고려

int n;

bool isPrime(int num) {
	for (int i = 2; i <= num / 2; i++) {
		if (num % i == 0) {
			return false;
		}
	}
	return true;
}

void DFS(int num, int jarisu) {
	if (jarisu == n) {
		if (isPrime(num)) {
			cout << num << "\n";
		}
		return;
	}
	for (int i = 1; i < 10; i += 2) {
		if (isPrime(num)) {
			DFS(num * 10 + i, jarisu + 1);
		}
	}
}

int main() {
	ios_base::sync_with_stdio(0);
	cin.tie(0); cout.tie(0);

	cin >> n;
	DFS(2, 1);
	DFS(3, 1);
	DFS(5, 1);
	DFS(7, 1);

	return 0;
}

'PS' 카테고리의 다른 글

백준 1722번 [순열의 순서]  (0) 2025.02.20
백준 2343번 [기타 레슨]  (0) 2025.02.19
백준 1517번 [버블 소트]  (0) 2025.02.12
백준 11286번 [절댓값 힙]  (0) 2025.02.12
백준 11003번 [최솟값 찾기]  (0) 2025.02.11