코딩테스트

[프로그래머스] 소수 만들기 - Lv.1

pyflu 2023. 8. 18. 22:16

[프로그래머스] 소수 만들기 Lv.1 - [파이썬/python]

 

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

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr


 

문제 설명

 

 

주어진 숫자 중 3개의 수를 더해 소수가 되는 경우의 수를 반환(return)하면 되는 문제입니다.

 

 

주어진 숫자 중 서로 다른 3개의 수를 더한 모든 경우의 수를 구하는 방법과

소수를 구하는 방법만 알면 쉽습니다.

 

 

더보기

중첩된 반복문을 사용하면 가능한 모든 조합을 생성할 수 있습니다.

소수는 "1"과 "자기 자신의 수"로만 나누어져 나머지가 생기지 않으며,

"1"과 "자기 자신의 수"의 사이인 수로 나누면 나머지가 생깁니다. 이점을 활용하시면 좋습니다.

 

 

 

 




정답 주의!!!




 

 

 


def solution(nums):
    make_nums = []  # 가능한 모든 조합의 합을 저장할 리스트
    result = []     # 소수를 저장할 리스트
   
    # 가능한 모든 조합의 합을 구합니다.
    for i in range(len(nums)-2):
        for j in range(i+1, len(nums)-1):
            for k in range(j+1, len(nums)):
                make_nums.append(nums[i] + nums[j] + nums[k])
   
    # 가능한 조합의 합 중에서 소수인 것을 찾아서 result 리스트에 추가합니다.
    for i in make_nums:
       
        # i가 소수인지 검사합니다.
        # all은 모든 요소가 참이면 True를 반환, 하나라도 거짓이 있으면 False반환
        # i가 2~(i-1)까지 나머지가 있는지 확인합니다. 나머지가 다 있으면 모든 요소가 True이므로 참
        if all(i % j != 0 for j in range(2, i)):
            result.append(i)
   
    # 소수의 개수를 반환합니다.
    return len(result)

728x90