알고리즘 공부

less than 1 minute read

소수 찾기 https://programmers.co.kr/learn/courses/30/lessons/42839 처음에 소수를 찾을 범위를 구하는데에서 애를 먹었다.
int(number/2)로 할 경우 뒤에 소수를 짤라버려서 돌아야 할 수를 하나 덜 도므로 +1을 해주어야 하고,
최적화된 것은 number의 제곱근에 +1 하는 경우이다.
permutation 사용법과 join의 사용법을 더 익히자!
list와 set을 자유자재로 왔다갔다 하고, 각 자료형을 왜 쓰는지, 어떻게 쓰는지도 알아야 할 것 같다.

from itertools import permutations
import math

def prime(number):
    if number < 2:
        return False
    k = math.sqrt(number)
    for i in range(2, int(k)+1):
        if number%i==0:
            return False
    return True
def solution(numbers):
    answer = []
    for j in range(1, len(numbers)+1):
        numberList = list(map(''.join, permutations(list(numbers), j)))
        for k in list(set(numberList)):
            if int(k)==1:
                break
            if prime(int(k)):
                answer.append(int(k))
    return len(set(answer))

소요시간 ; 1시간