소수찾기(Level 2)

1. 문제

2. 나의 풀이

def solution(numbers):
    nums = [n for n in numbers]
    max_num = int('9'*len(numbers))
    primes = set(range(2, max_num+1))
    for i in range(2, max_num+1):
        if i in primes:
            primes -= set(range(i*i, max_num+1, i))
    primes=list(primes)
    
    count = 0
    # rlt = []
    for p in primes:
        # temp = [str(x) for x in str(p)]
        temp_nums = [x for x in numbers]
        flag = 1
        for x in str(p):
            if x not in temp_nums:
                flag = 0
                break
            else:
                temp_nums.remove(x)
        if flag:
            count += 1
            # rlt.append(''.join(temp))
    # print(rlt)
    return count

시간초과가 생겨서
소수판별하는 부분의 로직을 에라토스의 체를 적용하였다

3. 남의 풀이



4. 느낀 점

  • permutation 모듈을 사용하면 간단하게 풀 수 있군!

좋은 웹페이지 즐겨찾기