728x90
https://programmers.co.kr/learn/courses/30/lessons/42839
코드 :
from itertools import permutations
# 소수 판별
def is_prime_number(x) :
if x <2 : # 1 또는 0
return False
for i in range(2,x) :
if x % i == 0 :
return False
return True
def solution(numbers):
answer = 0
num = []
for i in range(1, len(numbers)+1) : # 1자리부터 len(numbers)자리까지 (range에서 두번째수의 -1만큼 돌리니까)
# 나올 수 있는 모든 수의 조합
num.append(list(set(map(''.join,permutations(numbers,i)))))
per = list(set(map(int, set(sum(num,[])))))
for p in per :
if is_prime_number(p) :
answer+=1
return answer
set을 먼저해서 중복을 없애주고 list로 만들어준 다음 append한다.
per = list(set(map(int, sum(num,[])))) 이렇게 set을 하나만 이용해도 된다.
복습하며 만든 코드 :
from itertools import permutations
def is_prime_number(x) :
if x <2 :
return False
for i in range(2,x) :
if x %i ==0 :
return False
return True
def solution(numbers):
answer = 0
num = []
for i in range(1,len(numbers)+1 ):
num.extend(list(set(map(''.join,permutations(numbers,i)))))
per = list(set(map(int,num)))
for p in per :
if is_prime_number(p) :
answer +=1
return answer
extend를 사용하면 sum을 이용한 배열 덧셈 안해도 된다.
extend를 사용하면 하나의 리스트에 요소들이 추가되는 형태가 되기때문이다.
위 코드에서는 set을 for문에서 한번, per를 만들어줄 때 또 한번 이용했는데
for문에서의 set은 없애도 된다.
from itertools import permutations
def is_prime_number(x) :
if x < 2 :
return False
for i in range(2,x) :
if (x%i)==0 :
return False
return True
def solution(numbers):
answer = 0
num = []
for i in range(1,len(numbers)+1) :
num.extend(list(map(''.join,permutations(numbers,i))))
per = list(set(map(int,num)))
for p in per :
if is_prime_number(p) :
answer +=1
return answer
배운 점 :
1. sum(num, []) 와 같은 신박한 리스트끼리의 덧셈
2. join을 map에서 사용할 때는 ()가 필요없음
3. 당연하지만 1, 0 은 소수로 안본다.
4. permutations의 반환 값
리스트의 형태로 출력해서 보면 이렇다.
이렇게 반환되기 때문에 join을 이용해서 엮어줘야한다.
참고 블로그 :
https://iambeginnerdeveloper.tistory.com/122
복습 :
✅ 20220621
✅ 20220623
✅ 20220624
✅ 20220626
✅ 20220630
반응형
'알고리즘 > 프로그래머스문제풀이' 카테고리의 다른 글
[Python/프로그래머스]신고 결과 받기 (0) | 2022.06.28 |
---|---|
[Python/프로그래머스]순위_그래프 (0) | 2022.06.19 |
[Python/프로그래머스]모의고사_완탐 (0) | 2022.06.19 |
[Python/프로그래머스]단속 카메라_Greedy(그리디) (0) | 2022.06.19 |
[Python/프로그래머스]섬 연결하기_Greedy(그리디) (0) | 2022.06.19 |