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 |