[프로그래머스] 완전탐색(Brute Force) - 소수찾기 (Python)

Daisy 🌼·2022년 7월 26일
0

프로그래머스

목록 보기
15/36
post-thumbnail

문제출처 : 프로그래머스

👻 문제

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

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


  • 제한사항
    numbers는 길이 1 이상 7 이하인 문자열입니다.
    numbers는 0~9까지 숫자만으로 이루어져 있습니다.
    "013"은 0, 1, 3 숫자가 적힌 종이 조각이 흩어져있다는 의미입니다.

  • 입출력 예

  • 입출력 예 설명
    • 예제 #1
      [1, 7]으로는 소수 [7, 17, 71]를 만들 수 있습니다.
    • 예제 #2
      [0, 1, 1]으로는 소수 [11, 101]를 만들 수 있습니다.
      11과 011은 같은 숫자로 취급합니다.

👩‍💻 My cording

풀이 01 : permutations, extend(), 소수 개념, if문, for문

풀이 출처

from itertools import permutations

# 소수 : 1보다 큰 자연수 중 1과 자기 자신만을 약수로 가지는 수

def sosu(n): # 소수판별 함수
    if n < 2:
        return False #1이하 소수 x
   
    for i in range(2, n//2+1):
        if n%i == 0 :
            return False
   
    return True

def solution(numbers):
    answer = 0
    p = []
    result = []
   
    for i in range(1, len(numbers)+1):
        p.extend(permutations(numbers, i))
        result = [int(''.join(i)) for i in p]
       
    for j in set(result): #중복값 제거
        if sosu(j): # 소수 True 성립하면,
            answer += 1
   
    return answer

💡 Today I Learned
Python 리스트에 새로운 원소를 추가하는 방법에는 append(x)extend(iterable)가 있으며, 두 함수의 차이점을 알아보자.
(참고로 insert(i, x)함수도 있으며 위치 i에 x를 추가)


  • list.append(x) : 리스트 끝에 x 1개를 그대로 넣는다.
  • list.extend(iterable) : 리스트 끝에 가장 바깥쪽 iterable의 모든 항목을 넣는다.
    소스코드 출처
x = ['Tick', 'Tock', 'Song']
y = ['Ping', 'Pong']
x.append(y)
print('x:', x)
>>> x: ['Tick', 'Tock', 'Song', ['Ping', 'Pong']]
----------------------------------------------------------
x = ['Tick', 'Tock', 'Song']
y = ['Ping', 'Pong']
x.extend(y)
print('x:', x)
>>> x: ['Tick', 'Tock', 'Song', 'Ping', 'Pong']
----------------------------------------------------------
x = ['Tick', 'Tock', 'Song']
y = [['Ping', 'Pong']]
x.append(y)
print('x:', x)
>>> x: ['Tick', 'Tock', 'Song', [['Ping', 'Pong']]]
----------------------------------------------------------
x = ['Tick', 'Tock', 'Song']
y = 'Ping'
x.append(y)
print('x:', x)
>>> x: ['Tick', 'Tock', 'Song', 'Ping']
----------------------------------------------------------
x = ['Tick', 'Tock', 'Song']
y = 'Ping'
x.extend(y)
print('x:', x)
>>> x: ['Tick', 'Tock', 'Song', 'P', 'i', 'n', 'g']
profile
세상을 이롭게하는 AI Engineer

0개의 댓글