from itertools import permutations
def solution(numbers):
answer = 0
## permutation of elements of numbers
c_arr = list(set(map(int, [''.join(j) for i in range(len(numbers)) for j in permutations(numbers, i+1)])))
## Sieve of Eratosthenes
prime_num=[]
max_arr=max(c_arr)
chk=[False]*2+[True]*(max_arr-1)
for i in range(2,max_arr+1):
if chk[i]:
prime_num.append(i)
for j in range(2*i,max_arr+1,i):
if chk[j]:
chk[j]=False
## how many is prime number in c_arr
answer=len([i for i in c_arr if i in prime_num])
return answer
소수 찾기는 LEVEL1에서 이미 에라토스테네스의 체를 사용했던적이있어서 쉬울줄 알았는데 주어진 문자열을 조합해서 만들어내는게 힘들었다.
하나씩 빼서 조합할까 생각했었는데 그러면 너무 C처럼 하는거 같아서 다른방법을 찾아보기로 했다.
찾아보니 다음과 같은 것을 찾을수있었다.
https://programmers.co.kr/learn/courses/4008/lessons/12836#note
딱 내가 하려던게 해당 링크의 첫번째였다.
파이썬에서는 itertools.permutations 를 사용하면 쉽게 구해낼수 있었다.
위의 한줄짜리 코드는 질문하기에 있던 것을 가져왔다(정말 파이썬다운 문장이다ㅋㅋ)
이전에 했던것도 찾아가고 새로운걸 익히면서 하긴하는데 아예 새로운게 나오니 혼자의 힘으로 하기 버거워 진다
'STUDY > Algorithm' 카테고리의 다른 글
[프로그래머스] LEVEL2 더맵게, python3, 힙,Heap (0) | 2019.11.06 |
---|---|
[프로그래머스] LEVEL2 조이스틱,python3, 탐욕법(greedy) (0) | 2019.11.04 |
[프로그래머스] LEVEL2 탑, python3, 스택/큐 (0) | 2019.10.29 |
[프로그래머스] LEVEL2 주식가격,python3,스택/큐 (0) | 2019.10.29 |
[프로그래머스] LEVEL2 124 나라의 숫자,python3 (0) | 2019.10.28 |