소수 만들기

박고은·2023년 3월 19일
1

코딩테스트 연습

목록 보기
3/34

def isPnum(n):
    for i in range(2, n):
        if n%i == 0: return False
    return True
    
def solution(nums):
    nums = sorted(nums)
    p_num = []
    answer = -1
    
    for i in range(len(nums)):
        for j in range(1, len(nums)):
            for k in range(2, len(nums)):
                if nums[i]!=nums[j] and nums[i]!=nums[k] and nums[j]!=nums[k] and i<j and i<k and j<k:
                    n = nums[i] + nums[j] + nums[k]
                    p_num.append(n)
    
    answer = sum(list(map(isPnum, p_num)))
            
    return answer

map(function, list): 리스트의 모든 원소에 함수 적용

2부터 n-1까지의 모든 수로 나누어서 나머지가 0인 경우가 없는 수 소수 판별
3개의 리스트에서 서로 다른 3개의 수를 인덱스가 한 방향 순서대로 하나씩 뽑아 합하여 중복 제거
boolean 리스트에서 True의 수는 sum을 사용해서 카운트




+ 다른 풀이

from itertools import combinations

def isPnum(n):
    for i in range(2, n):
        if n%i == 0: return False
    return True
    
def solution(nums):
    p_num = list(map(sum, list(combinations(nums, 3))))
    answer = sum(list(map(isPnum, p_num)))
            
    return answer

combinations(list, n): list 안에서 n개의 원소로 된 조합을 튜플로 생성

0개의 댓글