728x90
반응형
문제:
한자리 숫자가 적힌 종이 조각이 흩어져있습니다. 흩어진 종이 조작을 붙여 소수를 몇 개 만들 수 있는지 알아내려 합니다.
각 종이 조각에 적힌 숫자가 적힌 문자열 numbers가 주어졌을 때, 종이 조각으로 만들 수 있는 소수가 몇 개인지 return 하도록 solution 함수를 완성해주세요.
풀이 방법:
문제의 태그가 완전탐색인만큼 시간이 충분히 주어졌을 것이라고 생각했다. 따라서 numbers로 생성될 수 있는 모든 숫자의 경우들을 다 담아두고 하나씩 소수인지 판별하면 될 것 같다고 생각했다.
따라서 모든 경우의 수를 만들기 위해서 python의 itertools의 permutations 기능을 사용하고자 하였다.
itertools.permutations(iterable,i) 와 같이 사용을 하며 iterable한 객체 중 i 개를 사용해서 나올 수 있는 경우의 수를 모두 만들어준다.
따라서 이를 활용해 모든 경우의 수를 만들어내었고 중복을 set을 사용해서 제거한 후 소수인지 판별 하였다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | def solution(numbers): import itertools number=list(numbers) a=[] for i in range(1,len(number)+1): a+=list(map(''.join,itertools.permutations(number,i))) a=list(set(map(int,a))) a.sort() count=0 print(a) for i in a: if i < 2: pass elif i ==2: count+=1 else: for j in range(2,i): if i % j ==0: break; elif j==i-1: count+=1 return count | cs |
728x90
반응형
'Algorithm > Python' 카테고리의 다른 글
[Programmers]Lv 2.전화번호 목록 (0) | 2019.02.16 |
---|---|
[Programmers]Lv 1.모의고사 (0) | 2019.02.15 |
[Programmers]Lv 1. 체육복 (0) | 2019.02.13 |
[Programmers]Lv2. 큰 수 만들기 (0) | 2019.02.12 |
[Programmers]Lv 1. K번째수 (0) | 2019.02.11 |