본문 바로가기

파이썬

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

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

 

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

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

programmers.co.kr

 

<코드>

from itertools import combinations

def solution(nums):
    cnt = 0
    for num in list(combinations(nums, 3)):
        N = sum(num)
        for i in range(2, int(N**0.5)+1):
            if N % i == 0:
                break
        else:
            cnt += 1
        
    
    
    return cnt

 

<풀이방법>

1. 소수는 1과 자신 빼고는 나누어지는 수가 없어야 하므로 for문으로 나머지가 0인 숫자가 존재하는지 찾으면 됨.

2. 범위를 자기의 제곱근까지로 해버리면 모든 숫자를 탐색하지 않고 반틈만 탐색하면 돼서 시간을 줄여준다.

 

<리뷰>

최근에 백준에서 풀었던 문제랑 거의 흡사해서 빨리 풀 수 있었다.

'파이썬' 카테고리의 다른 글

[백준] 2580 스도쿠  (0) 2022.06.12
[프로그래머스] 배달  (0) 2022.06.09
[백준] 1920번 수 찾기 (파이썬)  (0) 2022.06.08
[백준] 1182번 부분수열의 합 (파이썬)  (0) 2022.06.07
[백준] 1181번 단어정렬 (파이썬)  (0) 2022.06.07