알고리즘/프로그래머스

[프로그래머스/파이썬] 소수 찾기

beomseok99 2023. 9. 16. 01:53
728x90

https://school.programmers.co.kr/learn/courses/30/lessons/42839?language=python3 

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

1) 주어진 문자열에서 순열을 1개, 2개, 3개,,, 문자열의 길이-1개 까지 뽑아준다.

2) 뽑힌 순열들을 정수로 바꿈과 동시에 set안에 삽입하여 중복을 제거해준다.

3) set안의 정수들 중 소수가 몇개인지 판별하여 개수를 세준다

from itertools import permutations as p

def is_prime(x):
    if x<2:return False

    for i in range (2, int(x**(1/2) + 1)):
    	if x % i == 0:		
        	return False
    return True				

def solution(numbers):
    answer = 0
    
    numbers = list(numbers)
    siz = len(numbers)
    p_nums = set()
    is_p_number=set()
    p_num=''
    
    for i in range(1,siz+1):
        number = list(p(numbers,i))
        
        for num in number:
            for atom in num:
                p_num+=atom
            #print(p_num)
            p_nums.add(int(p_num))
            p_num=''
        
        for x in p_nums:
            if is_prime(x):
                is_p_number.add(x)
            p_nums=set() 
    answer = len(is_p_number)
    return answer
728x90