https://programmers.co.kr/learn/courses/30/lessons/42839
코딩테스트 연습 - 소수 찾기
한자리 숫자가 적힌 종이 조각이 흩어져있습니다. 흩어진 종이 조각을 붙여 소수를 몇 개 만들 수 있는지 알아내려 합니다. 각 종이 조각에 적힌 숫자가 적힌 문자열 numbers가 주어졌을 때, 종이
programmers.co.kr
내 풀이
from itertools import permutations
def solution(numbers):
answer=0
pem = []
n = [k for k in numbers]
for i in range(1,len(numbers)+1):
pem += list(permutations(n,i))
candi = [int(("").join(p)) for p in pem]
new_candi = list(set(candi))
for j in new_candi:
if j<2:
continue
is_prim = True
for i in range(2,int(j**0.5)+1):
if j%i==0:
is_prim=False
break
if is_prim:
answer+=1
return answer
예전에 풀었던 소수찾기를 응용한 버전이다.
문제를 풀면풀수록 permutation,combination은 쓸일이 정말 많다라는것을 느낀다.
다른사람의 풀이
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)
a |= 라는 표현을 처음봤는데
어느정도 예상이 되는 연산이였고 or 연산자를 이용한 union 연산이라고 생각하면 된다.
s1 = {"a", "b", "c"}
s2 = {"d", "e", "f"}
print(s1 | s2)
# {"a", "b", "c", "d", "e", "f"}
print(s1)
# {"a", "b", "c"}
s1 |= s2
print(s1)
# {"a", "b", "c", "d", "e", "f"}
'취준 > 프로그래머스' 카테고리의 다른 글
게임 맵 최단거리 - 파이썬 (0) | 2022.07.05 |
---|---|
조이스틱 - 파이썬 (0) | 2022.07.03 |
가장 큰 수 - 파이썬 (0) | 2022.07.01 |
프린터 - 파이썬 (0) | 2022.06.27 |
튜플 - 파이썬 (0) | 2022.06.23 |