Menu
CoddyTech

Combination Sum

보통백트래킹python iconjava iconcpp iconc iconjs icon+10

서로 다른 양의 정수로 이루어진 목록 candidates와 양의 정수 target이 주어집니다. 각 후보를 원하는 만큼 사용하여 합이 정확히 target이 되는 모든 조합을 찾으세요. [2, 3, 3]과 [3, 2, 3]은 같은 조합입니다.

각 조합은 오름차순으로 반환하고, 조합들은 사전순으로 반환하세요. 두 조합이 처음으로 서로 다른 위치에서 더 작은 값을 가진 조합을 먼저 반환합니다.

함수

combinationSum(candidates: integer-array, target: integer) → integer-2d-array
candidatesinteger-array
순서에 상관없이 원하는 만큼 사용할 수 있는 서로 다른 값
targetinteger
모든 조합의 합계가 정확히 도달해야 합니다
반환값integer-2d-array
target의 합이 되는 모든 조합을 오름차순으로 나열하고, 사전순으로 정렬합니다

제약 조건

  • 1 ≤ candidates.length ≤ 50
  • 2 ≤ candidates[i] ≤ 500
  • 2 ≤ target ≤ 500
  • candidates의 모든 값은 서로 다르며, 특정한 순서는 없습니다.
  • 최소 하나의 조합은 target에 도달하며, 최대 150개의 조합이 도달합니다.

예제

입력
candidates = [6, 2, 3]target = 8
출력
[[2, 2, 2, 2], [2, 3, 3], [2, 6]]
설명
2가 네 개 있는 경우, 2 + 3 + 3과 2 + 6은 모두 8이 되며, 두 번째 값에 따라 정렬됩니다. 2가 없으면 3과 6만 남고, 이들의 합은 3의 배수인데 8은 그렇지 않습니다.
challenge icon

후속 질문

각 후보는 이제 최대 한 번만 사용할 수 있고, candidates에는 중복된 값이 들어 있을 수 있습니다. 조합이 두 번 나타나지 않도록 검색을 어떻게 변경하나요?

코드 초기화
def combinationSum(candidates, target):
    # 여기에 코드를 작성하세요

테스트 #1

테스트 #2

테스트 #3

인자들

candidates = [6, 2, 3]
target = 8

예상 출력

[[2, 2, 2, 2], [2, 3, 3], [2, 6]]