띵유로그

[프로그래머스][완전탐색]소수탐색 본문

알고리즘

[프로그래머스][완전탐색]소수탐색

띵유 2020. 9. 7. 22:03
반응형

내 풀이

def is_prime(num):
    if num==0 or num==1:
        return False
    for i in range(num-2): 
        if num%(i+2)==0:
            return False
    return True
def solution(numbers):
    answer = 0
    import itertools
    num=[]
    for i in range(len(numbers)):
        num.extend(list(map(''.join, itertools.permutations(numbers,i+1))))
    
    num=[int(i) for i in num]
    num=list(set(num))
    print(num)
    for i in num:
        if is_prime(i):
            answer+=1
    return answer

더 효율적인 풀이)
- list를 계속해서 extend하는것이 아닌 set을 합집합으로 붙여나가면된다..!
     num|=set(map(''.join, itertools.permutations(numbers,i+1))
- range(2,8) : 로 하면 2부터 7까지 범위 지정
- itertools.permutation을 하면 permutation 객체가 됨-> 출력하려면 list로 변환 필요


pool = ['A', 'B', 'C']

print(list(map(''.join, itertools.permutations(pool)))) # 3개의 원소로 수열 만들기 print(list(map(''.join, itertools.permutations(pool, 2)))) # 2개의 원소로 수열 만들기

반응형
Comments