Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | |
7 | 8 | 9 | 10 | 11 | 12 | 13 |
14 | 15 | 16 | 17 | 18 | 19 | 20 |
21 | 22 | 23 | 24 | 25 | 26 | 27 |
28 | 29 | 30 |
Tags
- kotlin recyclerview
- isNullOrBlank
- 코틀린 컬렉션함수
- 객체의 동일성
- 코틀린 람다함수
- 코틀린 중첩클래스
- 코틀린 lateinit
- kakao blind
- add view
- 카카오 순위검색
- 코틀린 data class
- Kotlin
- 코틀린 내부 클래스
- kotlin collection
- 컬렉션 함수
- 프로그래머스 #탐욕법 #큰수만들기 #join #python
- lateinit
- kotlin addview
- Kotlin Generic
- 코틀린 제너릭
- 내용의동일성
- 코틀린
- kotlin listview
- class
- 해시
- programmers # 프로그래머스 #큰수비교 #cmp_to_key()
- 프로그래머스
- 컬렉션함수
- 코틀린 문자열
- collection function
Archives
- Today
- Total
엔지니어 규의 IT 프로그래밍 다이어리
프로그래머스 : 완전탐색 - 소수찾기 본문
728x90
나의풀이
from itertools import permutations
def comb(numbers):
num_list = []
for i in range(1,len(numbers)+1):
num = list(permutations([x for x in numbers], i))
num_list += ["".join(x) for x in num]
num_list = list(map(int,num_list))
return list(set(num_list))
def determine(x):
if x ==1 or x==0:
return False
if x ==2:
return True
for i in range(2,x):
if x %i == 0:
return False
return True
def solution(numbers):
print(comb(numbers))
print([determine(x) for x in comb(numbers)])
return sum([determine(x) for x in comb(numbers)])
|
cs |
1. permutations 를 이용해서 경우의수를 모두 구한다.
2. determine 함수를 구현해서 소수를 판별한다.
3. 모든 경우의수를 소수판별을 한후 개수를 더한다.
다른풀이
from itertools import permutations
def solution(n):
a = set()
for i in range(len(n)):
a |= set(map(int, map("".join, permutations(list(n), i + 1))))
a -= set(range(0, 2))
for i in range(2, int(max(a) ** 0.5) + 1):
a -= set(range(i * 2, max(a) + 1, i))
return len(a)
|
cs |
checkpoint1. a |= set()
a = {1,2,3,4,5}
b = {3,4,5,6,7,8,9}
a |= b
a
{1, 2, 3, 4, 5, 6, 7, 8, 9}
위코드에서 a |=b 는 곧 a = a|b 와 같으며, set 에서 중복을 피해서 더할수있는 방법이다.
set은 - 연산자를 사용할 수 있지만, +연산자는 사용할수 없고, 합집합은 '|' , 교집합은 "&" 를 사용한다.
checkpoint2.
int("0023") -> 23 이 출력이된다.
괜히 '0023' 에서 '00' 을 어떻게 빼야할지 고민할 필요가 없다.
checkpoint3.
for i in range(len(n)):
a |= set(map(int, map(''.join, permutations(list(n),i+1)))
전체 경우의수를 구하는 핵심 알고리즘이다.
"".join 은 str 타입만 join 할수있기때문에 사용하기전에 문자열인지 확인을 해야한다.
또한 map 과 같은 call back 함수는 int(), "".join() 에서 괄호를 사용할 필요가 없다.
map( function, iterable) 에서 function 은 괄호를 생략한다.
*iterable 객체란?
list, dict, set, str, bytes, tuple, range 타입 처럼
반복 가능한 객체를 의미한다.
728x90
'코딩테스트 > python' 카테고리의 다른 글
프로그래머스 : 스택/큐 - 올바른 괄호 (0) | 2023.01.20 |
---|---|
프로그래머스 : 해시 - 전화번호 목록 (0) | 2023.01.19 |
프로그래머스 : 해시 - 완주하지 못한 선수 (0) | 2023.01.16 |
프로그래머스 : 정렬 - 가장큰수 (0) | 2023.01.15 |
프로그래머스 : 탐욕법(Greedy) - 큰수만들기 (0) | 2023.01.14 |
Comments