DEV

[python] 소수 찾기

찻잔속청개구리 2024. 9. 1. 22:57
반응형

인증사진(2024-09-01)

문제

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

각 종이 조각에 적힌 숫자가 적힌 문자열 numbers가 주어졌을 때, 종이 조각으로 만들 수 있는 소수가 몇 개인지 return 하도록 solution 함수를 완성해주세요.

from itertools import permutations

def solution(numbers):
    r = []  # 소수를 저장할 리스트 초기화
    for i in range(1, len(numbers) + 1):  # 숫자 조합의 길이를 1부터 시작하여 전체 길이까지 반복
        for j in permutations(list(numbers), i):  # 주어진 숫자들의 모든 순열 생성
            jj = int(''.join(j))  # 순열을 문자열로 결합한 후, 정수로 변환
            # jj가 소수인지 판별하는 과정
            for k in range(2, jj):  # 2부터 jj-1까지 나눗셈을 시도
                if jj % k == 0:  # 나누어 떨어지는 경우, 소수가 아님
                    break
            else:
                # 소수일 때 (반복문이 break되지 않고 끝났을 때)
                if jj not in r and jj != 0 and jj != 1:  # 이미 리스트에 없는 소수이며, 0과 1이 아닌 경우
                    r.append(jj)  # 리스트에 소수 추가
    return len(r)  # 발견된 소수의 개수 반환

 

추가공부

itertools.permutations : 주어진 숫자 조합을 이용하여 가능한 모든 숫자 조합을 생성하기 위해 사용

반응형

'DEV' 카테고리의 다른 글

[Python] H-Index  (1) 2024.09.22
[Python] K번째수  (2) 2024.09.06
[Python] 모의고사  (0) 2024.08.28
[Python] 최소직사각형  (0) 2024.08.25
[python] 다음 큰 숫자  (0) 2024.08.18