프로그래머스_소수찾기_python
2021. 8. 8. 18:51ㆍ코딩테스트
반응형
https://programmers.co.kr/learn/courses/30/lessons/42839#
각 종이 조각에 적힌 숫자가 적힌 문자열 numbers가 주어졌을 때, 종이 조각으로 만들 수 있는 소수가 몇 개인지 return 하도록 solution 함수를 완성해주세요.
import itertools as it
def solution(numbers):
answer = 0
only = set([])
for num in range(1,len(numbers)+1):
tmp_it = it.permutations(numbers,num)
for tmp in tmp_it:
tmp = int(''.join(tmp))
if tmp<2:
continue
status = False
for i in range(2,tmp):
if tmp%i == 0:
status = True
break
if status==False:
only.add(tmp)
return len(only)
[내코드]
받은 문자열의 갯수대로 순열뽑음. 2부터 만든숫자까지 나눗셈이 가능한지 ck. 나누어지지 않으면 결과에 add.
permutaions(arr, num) : 순서o, arr에서 num개만큼 뽑음
combinations(arr, num) : 순서x, arr에서 num개만큼 뽑음
set : 중복 제거를 위해 list대신 사용
from itertools import permutations
def solution(n):
a = set()
for i in range(len(n)):
a |= set(map(int, map("".join, permutations(list(n), i + 1))))
a -= set(range(0, 2))
for i in range(2, int(max(a) ** 0.5) + 1):
a -= set(range(i * 2, max(a) + 1, i))
return len(a)
[다른사람코드]
받은 문자열 갯수대로 순열뽑아 결과에 합침.
결과중에 최댓값의 0.5 제곱을 뽑아 for문 돌림.
for문 내부에서 i값*2 ~ 결과중 최댓값까지 있는 배열을 제외
(i의 값이 2면 [4,6,8,10 ..] 제외)
a = set([1,4])
b = set([1,2,3])
a |= b //{1, 2, 3, 4} 합집합
b = set(range(0,2)) // {0,1}
b = set(range(2)) // {0,1}
a -= set(range(0,2)) // 여집합 {4}
a=2 b=3
a**b //8. 2의 3제곱
반응형
'코딩테스트' 카테고리의 다른 글
백준_균형잡힌 세상_python (0) | 2021.08.10 |
---|---|
프로그래머스_카펫_python (0) | 2021.08.08 |
프로그래머스_H-Index_python (0) | 2021.08.08 |
프로그래머스_모의고사_python (0) | 2021.08.08 |
프로그래머스_가장 큰 수_python (0) | 2021.08.04 |