알고리즘
[프로그래머스] 소수 찾기
j9972
2023. 6. 28. 13:36
728x90
1. 문제
https://school.programmers.co.kr/learn/courses/30/lessons/42839
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
2. 접근
1. numbers에 있는 String 값을 하나의 숫자들로 분리해서 n이라는 배열에 넣어준다
2. n에 있는 값들을 permutation을 통해서 나올 수 있는 모든 경우의 수를 구한다
3. 구한 값들을 join으로 연결했을때, 0이 아니면서 res라는 배열안에 없을 경우에 res배열에 넣어준다
4. res 배열안에 있는 값들을 for문을 통해 확인할 때, 소수면 ans 값을 1씩 증가시켜준다
간단한 문제이다. 코테에서 나왔으면,,,
3. 풀이
from itertools import permutations as pm
def prime(n):
if n < 2:
return False
for i in range(2, int(n**0.5)+1):
if n % i == 0:
return False
return True
def solution(numbers):
ans = 0
res = []
n = []
for i in numbers:
n.append(i)
for i in range(1,len(n)+1):
for j in list(pm(n,i)):
data = ''.join(j)
if (int(data) not in res) and int(data) != 0:
res.append(int(data))
for data in res:
if prime(data) == True:
ans += 1
return ans