-
순열 #프로그래머스 소수찾기알고리즘 2021. 3. 30. 16:38
programmers.co.kr/learn/courses/30/lessons/42839
코딩테스트 연습 - 소수 찾기
한자리 숫자가 적힌 종이 조각이 흩어져있습니다. 흩어진 종이 조각을 붙여 소수를 몇 개 만들 수 있는지 알아내려 합니다. 각 종이 조각에 적힌 숫자가 적힌 문자열 numbers가 주어졌을 때, 종이
programmers.co.kr
[ 문제 해결방법 ]
- check라는 함수를 만들어서 소수를 판정
- 여기서, math.sqrt를 사용하는 이유는 제곱수의 경우 소수가 아니기 때문에 이를 통해 판정
- permutations를 이용해서 모든 경우의 수를 만들고 판정
- 단, 여기서 중복되는 수가 발생해서 set으로 미리 줄이고 하면 속도가 많이 빨라짐
- answer에 모든 소수를 집어넣고 길이를 출력하면 정답
[ 소스코드 ]
from itertools import permutations import math def check(n): k = math.sqrt(n) if n < 2: return False for i in range(2, int(k)+1): if n % i == 0: return False return True def solution(numbers): answer = [] for k in range(1, len(numbers)+1): perlist = list(map(''.join, permutations(list(numbers), k))) for i in list(set(perlist)): if check(int(i)): answer.append(int(i)) answer = len(set(answer)) return answer
'알고리즘' 카테고리의 다른 글
#프로그래머스 스킬트리 (0) 2021.04.01 조합 #프로그래머스 두 개 뽑아서 더하기 (0) 2021.03.31 큐,덱 #백준 1966 (0) 2021.03.23 큐,덱 #백준 11866 (0) 2021.03.23 큐,덱 #백준 2164 (0) 2021.03.19 - check라는 함수를 만들어서 소수를 판정