09. 소수 찾기
코딩테스트 연습 > 완전탐색 > 소수 찾기
https://programmers.co.kr/learn/courses/30/lessons/42839
Input value =
Process =
하나 이상의 문자열의 원소를 나열하여 숫자 생성
생성된 숫자가 소수인지 판단 여부
Output value =
numbers는 길이 1 이상 7 이하인 문자열입니다.
numbers는 0~9까지 숫자만으로 이루어져 있습니다.
"013"은 0, 1, 3 숫자가 적힌 종이 조각이 흩어져있다는 의미입니다.
for i in range(1,len(numbers)+1):
array += list(permutations(numbers,i))
answer = []
for a in array:
a = ''.join(a)
answer.append(a)
num = set(int(i) for i in answer)
numbers = '011'
def prime_number(n):
if n==0 or n==1:
return False
else:
for i in range(2, int(n**0.5) + 1):
if n % i == 0:
return False
return True
result = []
for i in num:
if prime_number(i):
result.append(i)
len(result)
#00
numbers = '011'
#01
from itertools import permutations
set_ = set()
for n in range(len(numbers)):
set_ |= set(map(int,map(''.join,permutations(list(numbers),n+1))))
#02
set_-=set(range(0,2))
#03
for i in range(2,int(max(set_)**0.5)+1):
set_-=set(range(i*2,max(set_)+1,i))
구상한 방법을 바탕으로 통과한 첫번째 풀이는 다음과 같다...너무 막코딩이지만..
from itertools import permutations
from math import sqrt
def prime_number(n):
if n==0 or n==1:
return False
else:
for i in range(2, int(sqrt(n)) + 1):
if n % i == 0:
return False
return True
def solution(numbers):
array = []
for i in range(1,len(numbers)+1):
array += list(permutations(numbers,i))
answer = []
for a in array:
a = ''.join(a)
answer.append(a)
num = list(int(i) for i in answer)
result = []
for i in num:
if is_prime_number(i):
result.append(i)
return len(result)