알고리즘/소스코드

KOREATECH 1010: 접두 소수

cjw.git 2020. 12. 9. 09:43

Link : judge.koreatech.ac.kr/problem.php?id=1010


Python

더보기
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
import math
 
from sys import stdin
 
start = ['2''3''5''7']
case = ['1''3''7''9']
 
 
def prime_number(number):
    n = int(number)
    for i in range(2int(math.sqrt(n)) + 1):
        if n % i == 0:
            return False
    return True
 
 
def makeNumber(arr=None, length=None, depth=None):
    if arr is None:
        arr = []
    data = start if depth == 0 else case
    for i in data:
        arr[depth] = i
        if length - 1 == depth:
            if prime_number(''.join(arr)):
                print(''.join(arr))
        else:
            if prime_number(''.join(arr)):
                makeNumber(arr[:], length, depth + 1)  # arr[:] call by value로 값을 넘겨줌
 
 
number_length = int(stdin.readline().strip())
arr = ['' for _ in range(number_length)]
makeNumber(arr[:], number_length, 0)  # arr[:] call by value로 값을 넘겨줌
 
cs

FeedBack

  1. 재귀의 시간복잡도를 파악할 수 없음

 

 

 

cjw.git@gmail.com