문제
코딩테스트 연습 - 소수 만들기
주어진 숫자 중 3개의 수를 더했을 때 소수가 되는 경우의 개수를 구하려고 합니다. 숫자들이 들어있는 배열 nums가 매개변수로 주어질 때, nums에 있는 숫자들 중 서로 다른 3개를 골라 더했을 때
programmers.co.kr
풀이
- primeNumber()는 에라토스테네스의 체를 이용해 소수리스트를 만드는 함수로, 에라토스테네스의 체 연습용
- solution()은 combinations라이브러리를 사용해 nums에서 3개를 뽑고, 그 3개의 합이 소수리스트에 들어있으면 +1
코드
# 에라토스테네스의 체
def primeNumber():
lst, prime = [0] * 3001, []
lst[0] = lst[1] = 1
for i in range(2, 3001):
if not lst[i]:
prime.append(i)
for j in range(2 * i, 3001, i):
lst[j] = 1
return prime
def solution(nums):
from itertools import combinations
answer = 0
prime_lst = primeNumber()
for item in combinations(nums, 3):
if sum(item) in prime_lst:
answer += 1
return answer
반응형
'Algorithm > Programmers' 카테고리의 다른 글
[Programmers] Lv1. 신규 아이디 추천 (0) | 2021.05.15 |
---|---|
[Programmers] Lv1. 내적 (0) | 2021.05.15 |
[Programmers] Lv1. 음양 더하기 (0) | 2021.05.15 |
[Programmers] Lv1. 로또의 최고 순위와 최저 순위 (0) | 2021.05.14 |
[Programmers] Lv1. 모의고사 (0) | 2021.05.14 |
댓글