[5/27] 소수 찾기

문제

내 코드

from itertools import permutations

def sosu(n):
    cnt = 0
    if (n != 1):
        for i in range(1, int(n**0.5)+1):
            if (n % i == 0):
                cnt += 1
    return 1 if cnt==1 else 0

def solution(numbers):
    arr = []
    for i in range(1, len(numbers)+1):
        for j in permutations(numbers, i):
            arr.append( int("".join(list(j))) )
    arr = list(set(arr))
    return sum([sosu(k) for k in arr])

풀이

  1. 소수 판별 함수 작성
  2. for문을 사용하여 모든 자리수를 만들수 있게 하고, 그 안의 for문에서 permutations을 사용해 순서를 포함한 '순열'을 리스트에 추가한다.
  3. set을 사용하여 중복을 제거한다.
  4. 소수 개수를 출력

효율적인 코드

코드가 너무 많고, 내 코드도 복잡하진 않아보여서 skipp

피드백

  • permutations을 사용하면, combinations와 다르게 순서를 다르게 뽑아준다.

배운 것

  • permutitaions : 순열 (순서 O)
  • combinations : 조합 (순서 X)

드디어 Level.2에 진입했다!

좋은 웹페이지 즐겨찾기