πŸ‘©πŸ»‍🌾

[λ°±μ€€/Python] 2023번 μ‹ κΈ°ν•œ μ†Œμˆ˜ λ³Έλ¬Έ

μ½”λ”©ν…ŒμŠ€νŠΈ/λ°±μ€€(BOJ)

[λ°±μ€€/Python] 2023번 μ‹ κΈ°ν•œ μ†Œμˆ˜

μ₯¬μŠ€μ΄ 2023. 2. 19. 17:05
728x90

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() ν•¨μˆ˜μ— λ„£μ–΄μ£Όλ©΄ μ›ν•˜λŠ” 값듀을 얻을 수 μžˆλ‹€.

728x90
Comments