프로그래머스를 풀다가 완전 탐색 문제를 만났다.
위 문제는 결국 모든 조합을 찾아 소수가 되는 경우를 찾아야 한다. 전형적인 완전 탐색 문제이다.
하지만 문제가 하나 더 있다. 여기서 어떻게 모든 조합을 찾아낼 수 있을까? for문을 사용해 모든 조합을 만들면 너무 코드가 복잡해진다. 이럴땐 Python의 itertools.combinations을 사용하여 간편하게 3개의 숫자를 고를 수 있다.
import itertools
import math
def is_prime(n):
if n < 2:
return False
for i in range(2, int(math.sqrt(n)) + 1):
if n % i == 0:
return False
return True
def solution(nums):
count = 0
# 3개의 숫자를 선택하는 모든 조합 구하기
for comb in itertools.combinations(nums, 3):
if is_prime(sum(comb)): # 선택한 숫자들의 합이 소수인지 확인
count += 1
return count
이와 같이 itertools.combinations(nums, 3)을 하면 nums 배열에서 중복을 허용하지 않는 3개의 원소를 무작위로 골라 가능한 모든 조합을 만든다.
'CodingTest > 프로그래머스' 카테고리의 다른 글
BFS - 단어 변환 (0) | 2024.10.18 |
---|---|
[야근 지수] - 최대힙 이용 (0) | 2024.10.18 |
[프로그래머스] 타겟 넘버 (0) | 2024.08.05 |
[프로그래머스]게임 맵 최단거리 (0) | 2024.08.05 |
[프로그래머스] 할인 행사 (0) | 2024.08.03 |