Python) 소수 찾기

난이도 : Level 2
유형 : 완전탐색
카테고리 : 프로그래머스
날짜 : 2022-02-22

문제 풀이

  1. 사용되어야 할 변수

    1
    2
    3
    numbers # 입력받는 수
    answer # 소수의 갯수
    nums # 순열조합을 합쳐주기 위해 생성한 변수
  2. 입력받은 문자열 numbers의 한자리 수부터 len(numbers)의 수까지 순열(permutations)로 만들어준다.

    1
    2
    for i in range(1, len(numbers)+1) : # 1부터 문자열 num의 +1까지의 수 반복
    for j in permutations(numbers, i) : # 입력받은 문자열을 순열 조합으로 변경
  3. 순열로 만들어 준 수를 join 연산자를 사용하여 합쳐준다. 예) (‘1’, ‘7’) -> 17

    1
    nums = int(''.join(j))
  4. 각각의 수가 소수인지 검사하여, 소수면 리스트 answer에 추가해준다.

    1
    2
    3
    4
    5
    6
    for k in range(2, nums) : # 소수 검사
    if nums % k == 0 : # 나누어 떨어지면 소수 X
    break
    else : # 나누어 떨어지지 않으면
    if nums not in answer and nums != 0 and nums != 1 : # 소수 O
    answer.append(nums) # answer에 nums 추가
  5. 리스트 answer의 갯수를 리턴한다.

    1
    return len(answer)

전체 코드

1
2
3
4
5
6
7
8
9
10
11
12
13
from itertools import permutations
def solution(numbers):
answer = []
for i in range(1, len(numbers)+1) :
for j in permutations(numbers, i) :
nums = int(''.join(j))
for k in range(2, nums) :
if nums % k == 0 :
break
else :
if nums not in answer and nums != 0 and nums != 1 :
answer.append(nums)
return len(answer)
Author

Sujeong Kim

Posted on

2022-02-22

Updated on

2022-02-22

Licensed under

댓글