https://programmers.co.kr/learn/courses/30/lessons/12977
다음 문제는, 배열이 주어질 때, 배열 내 숫자들중 서로 다른 3개의 합 중 소수가되는 경우를 구하는 문제입니다.
- 서로 다른 3개의 숫자를 골라 더해주고
- 그 숫자들중 소수를 찾고
- 찾은 소수들의 개수를 반환하자
def solution(nums):
answer = []
list1 = list(set([nums[i] + nums[j] + nums[k] for i in range(len(nums)-2)
for j in range(i+1, len(nums)-1)
for k in range(j+1, len(nums))]))
for i in range(len(list1)):
count = 0
for j in range(2, int(list1[i]//2)+1):
if list1[i] % j == 0: # 소수가 아닐때 체크용도
count += 1
if count == 0:
answer.append(list1[i])
return len(answer)
# 출력을 위한 코드입니다.
nums = [1, 2, 3, 4]
print(solution(nums))
def solution(nums):
answer = []
list1 = [nums[i] + nums[j] + nums[k] for i in range(len(nums)-2)
for j in range(i+1, len(nums)-1)
for k in range(j+1, len(nums))]
for i in range(len(list1)):
count = 0
for j in range(2, int(list1[i]//2)+1):
if list1[i] % j == 0: # 소수가 아닐때 체크용도
count += 1
if count == 0:
answer.append(list1[i])
return len(answer)
첫번째 코드에서 틀린 이유는 문제를 잘못 읽었다,, 서로 다른 인덱스끼리 더했을 때, 중복되는 숫자가 나오면 안되는걸로 읽고 set을 이용해 코드를 짰는데 틀리고 난 후 제대로 읽어보니 그런말이 없었다. 앞으로 문제를 읽을땐 꼼꼼하게..!!!