문제 설명
한자리 숫자가 적힌 종이 조각이 흩어져있습니다. 흩어진 종이 조각을 붙여 소수를 몇 개 만들 수 있는지 알아내려 합니다.
각 종이 조각에 적힌 숫자가 적힌 문자열 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은 같은 숫자로 취급합니다.
import itertools
def solution(numbers):
a=[]
l_num = list(numbers)
d=[]
for i in range(1,len(l_num)+1):
p = itertools.permutations(l_num, i)
a.append(list(p))
for i in range(len(a)):
for j in range(len(a[i])):
c = ''
for k in range(len(a[i][j])):
c += a[i][j][k]
d.append(c)
num = list(map(int,list(d)))
num1 = list(set(num))
if 0 in num1:
num1.remove(0)
if 1 in num1:
num1.remove(1)
num2=list(num1)
for i in num1:
if i >2:
for j in range(2,i//2+1):
if i % j ==0 :
num2.remove(i)
break
elif i ==2:
continue
print(num2)
answer = len(num2)
return answer
numbers = "114"
print(solution(numbers))
1. 이코드에 사용한것 itertools 에서 순열을 택한다
2. 나온 수를 배열로 만들고 문자열로 합을 구한다.
3. 중복을 제거해준다.
4. 그다음이 이제 핵심이다. 소수구하기
5. 원래 있던 배열에 깊은복사 얕은 복사 개념을 이번에 알게되었다.
(python) 리스트3 - 리스트 복사하기, 리스트와 함수, 리스트 함축, 2차원 리스트
파이썬에서 리스트 변수는 리스트 객체를 직접 저장하고 있지 않다. 리스트 자체는 다른 곳에 저장되고 리스트의 참조값(reference)만 변수에 저장된다. 참조값은 메모리에서 리스트 객체의 위치
hcr3066.tistory.com
6. 이걸 사용해서 소수가 아닌것을 지워버린다.
반응형
'코딩 > 프로그래머스 lv2' 카테고리의 다른 글
[프로그래머스] 문자열 압축 - python (0) | 2021.05.02 |
---|---|
올바른 괄호 (0) | 2021.05.01 |
다음 큰 숫자 (0) | 2021.04.30 |
다리를 지나는 트럭 (0) | 2021.04.29 |
구명보트 (0) | 2021.04.28 |