プログラマレベル2「小数点を検索」
7023 ワード
質問する
少数のプログラマーの検索
に答える
itertoolsの配列(シーケンス)を使用して、コンビネーション文字の数を検索します.
set資料型を用いて重複を解消する.
そして少数かどうかを判断すればいい!
エラトステネスのふるい
少数の人はエラトネスのふるいで救助した.
![](https://s1.md5.ltd/image/6420e3488e509dce176a1e957ea07ff5.gif)
0과 1은 소수가 아니니 제외하고 2부터 시작한다.
2를 소수에 추가하고 2의 모든 배수를 지우고 난 후,
3을 소수에 추가하고 지워지지 않은 3의 모든 배수를 지운다.
4는 이미 지워졌으므로 지나간다.
5는 지워지지 않았으므로 소수이며, 소수에 추가하고 5의 모든 배수를 지운다
.
.
.
このまま繰り返していくと、少数しか残っていません.これはエラトステネスのふるいと呼ばれています.
ウィキペディア
Pythonコード
from itertools import permutations
def primeCheck(n):
# 에라토스테네스의 채를 이용한 소수 리스트를 반환하는 함수
checklist = [False,False] + [True]*(n-1)
primes=[]
for i in range(2,n+1):
if checklist[i]:
primes.append(i)
for j in range(i*2, n+1, i):
checklist[j] = False
return primes
def solution(numbers):
# itertools의 순열 메소드를 이용한 경우의 수 저장
sets = []
for i in range(1, len(numbers)+1):
sets += list(permutations(list(numbers), i))
# 문자열 이어 붙인 뒤 숫자로 자료형을 바꾸고
# set을 이용해 다시 한번 중복 제거 ('011'이 숫자형 11로 바뀌면서 생기는 중복 제거)
numlist = []
for x in sets:
temp = ''
for y in x:
temp += y
numlist.append(temp)
numlist = list(set(list(map(int, numlist))))
# 소수인지 확인
primetable = primeCheck(max(numlist))
answer = 0
for k in numlist:
if k in primetable:
answer += 1
return answer
Reference
この問題について(プログラマレベル2「小数点を検索」), 我々は、より多くの情報をここで見つけました https://velog.io/@kgpaper/프로그래머스-Level2-소수-찾기テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol