π©π»πΎ
[λ°±μ€/Python] 2023λ² μ κΈ°ν μμ λ³Έλ¬Έ
1οΈβ£λ¬Έμ μ€λͺ
μλΉμ΄κ° μΈμμμ κ°μ₯ μ’μνλ κ²μ μμμ΄κ³ , μ·¨λ―Έλ μμλ₯Ό κ°μ§κ³ λ Έλ κ²μ΄λ€. μμ¦ μλΉμ΄κ° κ°μ₯ κ΄μ¬μμ΄ νλ μμλ 7331μ΄λ€.
7331μ μμμΈλ°, μ κΈ°νκ²λ 733λ μμμ΄κ³ , 73λ μμμ΄κ³ , 7λ μμμ΄λ€. μ¦, μΌμͺ½λΆν° 1μ리, 2μ리, 3μ리, 4μ리 μ λͺ¨λ μμμ΄λ€! μλΉμ΄λ μ΄λ° μ«μλ₯Ό μ κΈ°ν μμλΌκ³ μ΄λ¦ λΆμλ€.
μλΉμ΄λ Nμ리μ μ«μ μ€μμ μ΄λ€ μλ€μ΄ μ κΈ°ν μμμΈμ§ κΆκΈν΄μ‘λ€. Nμ΄ μ£Όμ΄μ‘μ λ, μλΉμ΄λ₯Ό μν΄ Nμ리 μ κΈ°ν μμλ₯Ό λͺ¨λ μ°Ύμ보μ.
2οΈβ£μ λ ₯
첫째 μ€μ N(1 ≤ N ≤ 8)μ΄ μ£Όμ΄μ§λ€.
3οΈβ£μΆλ ₯
Nμ리 μ μ€μμ μ κΈ°ν μμλ₯Ό μ€λ¦μ°¨μμΌλ‘ μ λ ¬ν΄μ ν μ€μ νλμ© μΆλ ₯νλ€.
π©π»π»μμ±ν μ½λ
import sys
sys.setrecursionlimit(10 ** 6)
n = int(input()) # λͺμ리 μμΈμ§ μ
λ ₯
# 'μλΌν μ€ν
λ€μ€μ 체'λ‘ μμ νλ³
def Eratos(checkPrime):
for i in range(2, int(checkPrime ** 0.5) + 1):
if int(checkPrime) % i == 0:
return False
return True
def DFS(num):
if len(str(num)) == n:
print(num)
else:
for i in range(10):
temp = num * 10 + i
if Eratos(temp):
DFS(temp)
DFS(2)
DFS(3)
DFS(5)
DFS(7)
π‘μ½λ μ€λͺ
μλΌν μ€ν λ€μ€μ μ²΄λ‘ μμ νλ³μ νλ Eratos() ν¨μλ₯Ό λ§λ€μλ€.
DFS() ν¨μμμλ λ§€κ°λ³μλ‘ λ°μ μ«μμ κΈΈμ΄κ° nμλ¦¬μΌ λ, 쑰건μ λͺ¨λ μΆ©μ‘±νλ―λ‘ ν΄λΉ κ°μ λ°ννλλ‘ νκ³ , μλ λλ μ«μμ 10μ κ³±νμ¬ μλ¦Ώμλ₯Ό λλ €μ£Όκ³ 0~9κΉμ§μ μλ₯Ό μ°¨λ‘λ‘ λν΄μ€μ μλ‘ λ§λ€μ΄μ§ μμΈ tempκ° μμμΈμ§ μλμ§ νλ³νλ€.
κ·Έλ¦¬κ³ tempκ° μμμ΄λ©΄ DFSλ₯Ό λ€μ μ€ννλ€. -> μ¬κ·ν¨μ μ€ν
μΌμͺ½λΆν° νμ리μμΌ λ μμμ¬μΌ νλ―λ‘ νμ리 μμμΈ 2, 3, 5, 7μ DFS() ν¨μμ λ£μ΄μ£Όλ©΄ μνλ κ°λ€μ μ»μ μ μλ€.
'μ½λ©ν μ€νΈ > λ°±μ€(BOJ)' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
[λ°±μ€/Python] 1260λ² DFSμ BFS (0) | 2023.03.02 |
---|---|
[λ°±μ€/Python] 13023λ² ABCDE (0) | 2023.03.02 |
[λ°±μ€/Python] 11724λ² μ°κ²° μμμ κ°μ ꡬνκΈ° (0) | 2023.02.19 |
[λ°±μ€/Python] 10989λ² μ μ λ ¬νκΈ°3 (0) | 2023.02.19 |
[λ°±μ€/Python] 2761λ² μ μ λ ¬νκΈ° 2 (0) | 2023.02.15 |