코딩테스트/프로그래머스

[프로그래머스] [Level 1] 소수 만들기

박소민 2022. 3. 21. 15:15
문제) 소수 만들기
 

코딩테스트 연습 - 소수 만들기

주어진 숫자 중 3개의 수를 더했을 때 소수가 되는 경우의 개수를 구하려고 합니다. 숫자들이 들어있는 배열 nums가 매개변수로 주어질 때, nums에 있는 숫자들 중 서로 다른 3개를 골라 더했을 때

programmers.co.kr

 

  • 내 풀이
    • 조합 이용
    • combinations(리스트, n) : 리스트에서 n개씩 값 추출하여 튜플 생성
      • 순열 permutations(리스트, n)
from itertools import combinations

def solution(nums):
    result=1
    count=0
    com=list(combinations(nums, 3)) #조합: 리스트에서 n개씩 추출
    n_sum=[sum(a) for a in com]
    
    for n in n_sum:
        for i in range(2,n):
            if n%i==0:
                result+=1
        if result==1:
            count+=1
        result=1
    
    return count

 

  • 다른 사람 풀이
    • for-else
      • for문과 같은 줄에 else를  쓸 경우
      • break로 빠져나가지 않으면 for문 반복 끝난 뒤에 else문 실행
    • as 이용하여 함수 표현 간단하게 바꿀 수 있음
def solution(nums):
    from itertools import combinations as cb
    count=0
    
    for a in cb(nums,3):
        n_sum=sum(a)
        for i in range(2,n_sum):
            if n_sum%i==0:
                break
        else:
            count+=1
        
    return count