Computer Science/자료구조
[6.6] 프로그래머스 코딩테스트 연습 - 소수 만들기 (7/100)
토마토.
2021. 6. 6. 19:26
코딩테스트 연습 - 소수 만들기 | 프로그래머스 (programmers.co.kr)
코딩테스트 연습 - 소수 만들기
주어진 숫자 중 3개의 수를 더했을 때 소수가 되는 경우의 개수를 구하려고 합니다. 숫자들이 들어있는 배열 nums가 매개변수로 주어질 때, nums에 있는 숫자들 중 서로 다른 3개를 골라 더했을 때
programmers.co.kr
어렵다....
def solution(nums):
summ = set()
prime = []
answer = 0
for i in range(len(nums)):
for j in range(i+1, len(nums)):
for k in range(j+1, len(nums)):
m = (nums[i], nums[j], nums[k])
if m not in summ:
summ.append(m)
a = [False, False] + [True] *999
for i in range(2, 1001):
if a[i]:
prime.append(i)
for j in range(2*i, 1001, i):
a[j] = False
for i in summ:
l = sum(i)
if l in prime:
answer += 1
return answer
모르겠다. (어떤 경우를 놓친 건지 모르겠음 - 어떤 테스트가 있었을까? )
def prime(n):
prime = []
array = [True for i in range(n+1)]
for i in range(2, n+1):
if array[i] == True:
j = 2
while i * j <= n:
array[i*j] = False
j += 1
if array[i]:
prime.append(i)
return prime
def solution(nums):
summ = set()
n = len(nums)
answer = 0
pri = prime(1000)
for i in range(0, n-2):
for j in range(i+1, n-1):
for k in range(j+1, n):
if (nums[i], nums[j], nums[k]) not in summ:
summ.add((nums[i], nums[j], nums[k]))
#prime 구해주자...
for i in summ:
if sum(i) in pri:
answer += 1
if answer >= 1:
pass
elif answer == 0:
answer = -1
return answer