티스토리 뷰

728x90

https://programmers.co.kr/learn/courses/30/lessons/42839

 

코딩테스트 연습 - 소수 찾기

한자리 숫자가 적힌 종이 조각이 흩어져있습니다. 흩어진 종이 조각을 붙여 소수를 몇 개 만들 수 있는지 알아내려 합니다. 각 종이 조각에 적힌 숫자가 적힌 문자열 numbers가 주어졌을 때, 종이

programmers.co.kr

 

  • 해설 :

숫자로 이루어진 문자열이 주어질 때, 각 자릿수들을 조합해서 만들 수 있는 모든 수들 중 소수만 찾아서 개수를 출력하면 된다.

 

 

 

  • 풀이 :

numbers에 담겨있는 숫자의 각 자릿수들을 1부터 numbers의 길이만큼 개수만큼 조합한 모든 수들에 대해 isPrime함수를 통해 소수인지 판별한다. 소수일 경우 answer에 1을 추가해주었고 sum으로 총합을 계산하였다.

 

 

 

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
from itertools import permutations
= []
def isprime(x):
    if x in l:
        return False
    l.append(x)
    if x == 1 or x == 0:
        return False
    for i in range(2, x):
        if x % i == 0:
            return False
    return True 
 
def solution(numbers):
    answer = 0
    for i in range(1,len(numbers)+1):
        answer += sum(1 for a in permutations(numbers,i) if isprime(int(''.join(a))))
    return answer
cs
320x100
댓글
© 2022 WonSeok, All rights reserved