https://school.programmers.co.kr/learn/courses/30/lessons/42885
from itertools import product
def solution(numbers, target):
answer = 0
nums = [(i, -1 * i) for i in numbers] # 각 숫자에 대해 양수와 음수 조합 생성
# 가능한 모든 조합을 생성하여 합을 계산
for combination in product(*nums):
if sum(combination) == target:
answer += 1
return answer
Tip!
예를 들어, nums 리스트가 다음과 같이 구성되어 있다고 가정해 봅시다:
nums = [(1, -1), (2, -2), (3, -3)]
만약 product 함수에 nums를 그대로 전달하면, 이 리스트 하나가 하나의 인수로 처리됩니다. 즉, product는 이 리스트 하나를 하나의 요소로 간주합니다.
for item in product(nums):
print(item)
#결과: ((1, -1), (2, -2), (3, -3))
하지만 (*nums)를 사용하면, nums 리스트 내부의 각 튜플을 개별적인 인수로 전달하게 됩니다. 이렇게 하면 product 함수는 nums 리스트 안에 있는 각 튜플의 요소들을 개별적으로 조합합니다.
for item in product(*nums):
print(item)
##결과
(1, 2, 3)
(1, 2, -3)
(1, -2, 3)
(1, -2, -3)
(-1, 2, 3)
(-1, 2, -3)
(-1, -2, 3)
(-1, -2, -3)