반응형
문제 접근
- 소수의 판별을 할 줄 알면 풀 수 있던 문제
- 에라토스테네스의 체를 기억하자
- 2021.03.08 - [Problem-solved (코딩테스트 문제풀이)/python] - [백준] 소수 구하기 1929 (파이썬)
# Summer/Winter Coding(~2018) 소수 만들기
import math
from itertools import combinations
def solution(nums):
# 에라토스테네스의 체를 이용하여 해당 범위의 소수를 판별한다.
# 1~1000 사이의 자연수를 3개 고르므로 단순히 합의 최대값을 3000이라고 설정하였다
n = 3000
array = [True for i in range(n+1)]
for i in range(2, int(math.sqrt(n) + 1)):
if array[i] == True:
j = 2
while i * j <= n:
array[i * j] = False
j += 1
answer = 0
# itertools 라이브러리를 사용하여 조합 리스트를 구하고, 그 합의 값이 소수이면 갯수를 체크한다
for x in combinations(nums,3):
num = sum(list(x))
if array[num] == True:
print(num, array[num])
answer += 1
return answer
'코딩테스트 > 파이썬' 카테고리의 다른 글
[프로그래머스] 더 맵게 (level2) (파이썬) (0) | 2021.06.28 |
---|---|
[프로그래머스 ] 짝지어 제거하기 (level2) (파이썬) (0) | 2021.06.21 |
[프로그래머스] 예상 대진표(level 2) (파이썬) (0) | 2021.05.19 |
[프로그래머스] 위장(level 2) (파이썬) (0) | 2021.05.18 |
[프로그래머스] 다음 큰 숫자(level 2) (파이썬) (0) | 2021.05.18 |