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