본문 바로가기
코딩 테스트/프로그래머스

소수 만들기

by ornni 2024. 5. 8.
728x90
반응형

첫번째 코드

 

소수임을 확인하는 코드를 작성한 후

nums안의 원소 중 세개를 더한 값들의 리스트비교하여 소수가 맞는지 확인한다.

 

import math


def solution(nums):
    answer = 0
    A = []
    
    prime = list(range(1001))
    prime[1] = 0
    
    for i in range(2, int(math.sqrt(1001))+1):
        for j in range(i*i, 1001, i):
            prime[j] = 0
    
    for i in range(len(nums)):
        for j in range(i+1, len(nums)):
            for k in range(j+1, len(nums)):
                A.append(nums[i] + nums[j] + nums[k])
    
    for i in A:
        if prime[i] != 0:
            answer += 1
    
    return answer

 

오류!


두번째 코드

 

nums의 각 원소는 1 이상 1,000 이하의 자연수라는 말에 너무 꽂혀버렸다.

3개를 더한 것까지의 범위를 생각해야 한다!

 

import math

nums = [1,2,7,6,4]
answer = 0
A = []

for i in range(len(nums)):
    for j in range(i+1, len(nums)):
        for k in range(j+1, len(nums)):
            A.append(nums[i] + nums[j] + nums[k])

A.sort()
limit = sum(A[-3:])

prime = list(range(limit))
prime[1] = 0

for i in range(2, int(math.sqrt(limit))+1):
    for j in range(i*i, limit, i):
        prime[j] = 0

for i in A:
    if prime[i] != 0:
        answer += 1

print(answer)

 

오류


세번째 코드

 

범위를 잡을 때 생각이 짧았다.

리스트의 인덱스가 0부터 시작하므로 인덱스와 맞추기 위해 +1을 해야한다.

 

import math

def solution(nums):
    answer = 0
    A = []

    for i in range(len(nums)):
        for j in range(i+1, len(nums)):
            for k in range(j+1, len(nums)):
                A.append(nums[i] + nums[j] + nums[k])

    A.sort()
    limit = sum(A[-3:]) + 1

    prime = list(range(limit))
    prime[1] = 0

    for i in range(2, int(math.sqrt(limit))+1):
        for j in range(i*i, limit, i):
            prime[j] = 0

    for i in A:
        if prime[i] != 0:
            answer += 1
    
    return answer

 

통과!


링크

https://github.com/ornni/programmers/tree/main/%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%A8%B8%EC%8A%A4/1/12977.%E2%80%85%EC%86%8C%EC%88%98%E2%80%85%EB%A7%8C%EB%93%A4%EA%B8%B0

 

programmers/프로그래머스/1/12977. 소수 만들기 at main · ornni/programmers

repository for recording Programmers Algorithm problem solving - ornni/programmers

github.com

 

반응형

'코딩 테스트 > 프로그래머스' 카테고리의 다른 글

추억 점수  (0) 2024.05.13
약수의 개수와 덧셈  (0) 2024.05.08
최소직사각형  (2) 2024.05.03
3진법 뒤집기  (0) 2024.04.30
최대공약수와 최소공배수  (0) 2024.04.30