[프로그래머스/Python] 타겟 넘버

PhilAI·2023년 9월 8일
0

📌 문제

https://school.programmers.co.kr/learn/courses/30/lessons/42885

📌 풀이

풀이 1 - (product 함수 사용 성공)

  1. numbers에 들어 있는 수의 음수 형태를 만든다
  2. (양수, 음수)와 같이 튜플형태를 nums라는 리스트에 넣는다.
  3. nums 리스트로 만들 수 있는 모든 조합을 만든다.
  4. 조합의 합을 구하여 target과 같으면 answer에서 1을 더한다.
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)

참고

profile
철학과가 도전하는 Big Data, AI

0개의 댓글