[Programmers] - 소수 만들기

오동훈·2021년 3월 18일
0

Programmers

목록 보기
17/64
post-thumbnail

1. Problem 📃

https://programmers.co.kr/learn/courses/30/lessons/12977

다음 문제는, 배열이 주어질 때, 배열 내 숫자들중 서로 다른 3개의 합 중 소수가되는 경우를 구하는 문제입니다.

2. Logic 👨‍🏫

  1. 서로 다른 3개의 숫자를 골라 더해주고
  2. 그 숫자들중 소수를 찾고
  3. 찾은 소수들의 개수를 반환하자

3. Code 💻

1. 내가 푼 코드

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))

2. 내가 푼 코드 - 1 retries

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)

4. Feedback 📚

첫번째 코드에서 틀린 이유는 문제를 잘못 읽었다,, 서로 다른 인덱스끼리 더했을 때, 중복되는 숫자가 나오면 안되는걸로 읽고 set을 이용해 코드를 짰는데 틀리고 난 후 제대로 읽어보니 그런말이 없었다. 앞으로 문제를 읽을땐 꼼꼼하게..!!!

profile
삽질의 기록들🐥

0개의 댓글