[프로그래머스] Level 1 - 소수 만들기
in Algorithm on Programmers, Problems
문제
문제 설명 및 풀이
서로 다른 3개를 고르기 위해 3중 for문을 사용하였고, itertools를 사용해서 조합을 구해주었다. 대충 구글링해서 사용하다 보니 바보같이 구현했던 것 같다.
애초부터 itertools의 combinations으로 서로 같은 값을 가진 다른 원소의 조합도 포함하여 구해줄 수 있더라…
C++스러운 나의 코드
import itertools
def isPrime(num):
if num == 2 or num == 3:
return True
if num == 1:
return False
for i in range(2, int(num**0.5)+1):
if num % i == 0:
return False
return True
def solution(nums):
answer = 0
s = []
for idx1, i in enumerate(nums):
for idx2, j in enumerate(nums):
if idx1 >= idx2:
continue
for idx3, k in enumerate(nums):
if idx2 >= idx3:
continue
num = i+j+k
s.append(num)
for i in s:
if isPrime(i):
answer += 1
p = itertools.combinations(nums, 3)
for i in list(p):
print(sum(i))
return answer
깔끔한 풀이
from itertools import combinations
def prime_number(x):
answer = 0
for i in range(1,int(x**0.5)+1):
if x%i==0:
answer+=1
return 1 if answer==1 else 0
def solution(nums):
return sum([prime_number(sum(c)) for c in combinations(nums,3)])