Programming/ν”„λ‘œκ·Έλž˜λ¨ΈμŠ€

[완전탐색] lv.2 μ†Œμˆ˜ μ°ΎκΈ° | Python 파이썬

ν•΄λ“œμœ„κ·Έ 2024. 2. 7. 17:44
λ°˜μ‘ν˜•

문제 :

 

 

μ½”λ“œ: 

from itertools import permutations

# μ†Œμˆ˜ νŒλ³„ ν•¨μˆ˜
def is_prime_num(n):
    if n <= 1:
        return False
    
    for i in range(2, int(n**(1/2))+1):
        if n % i == 0:
            return False
    return True
    
def solution(numbers):
    num = list(numbers)
    allnum = set()
    
    # μˆœμ—΄κ³Ό setμ‚¬μš©ν•΄μ„œ λͺ¨λ“  μ‘°ν•© κ΅¬ν•˜κΈ°
    for i in range(1, len(numbers)+1):
        permutationList = permutations(num, i)
        for per in permutationList:
            allnum.add(int(''.join(per)))
    
    cnt = 0
    
    # μ†Œμˆ˜ νŒλ³„
    for n in allnum:
        if is_prime_num(n):
            cnt+=1
            
    return cnt

 

 

풀이 : 

1. μ†Œμˆ˜λ₯Ό κ΅¬ν• λ•ŒλŠ” μ—λΌν† μŠ€ν…Œλ„€μŠ€μ˜ 채 μ‚¬μš©ν•΄μ„œ 루트+1 κΉŒμ§€λ§Œ μ†Œμˆ˜μΈμ§€ νŒλ³„ν•˜λ©΄ λœλ‹€.

2. permutations(iterable, r)을 μ‚¬μš©ν•˜λ©΄ iterable의 μš”μ†Œλ“€μ˜ 길이 r인 μˆœμ—΄λ‘œ λ°˜ν™˜ν•œλ‹€. 이 λ¬Έμ œμ—μ„œλŠ” λͺ¨λ“  쑰합을 κ΅¬ν•˜κΈ° μœ„ν•΄ for문을 μ‚¬μš©ν•˜μ—¬ 길이가 i둜 λ°”λ€Œλ„λ‘ ν–ˆλ‹€.

3. 쀑볡 μ œκ±°ν•˜κΈ° μœ„ν•΄ set에 λ„£κΈ°!

4. ''.join ν™œμš©

 

λ°˜μ‘ν˜•