Menu
CoddyTech

4Sum

정수 목록 nums와 정수 target이 주어집니다. 네 값이 nums의 서로 다른 네 위치에 있고 합이 target이 되는 모든 사중항 [a, b, c, d]를 반환하세요. 각 사중항의 값은 감소하지 않는 순서로 작성하세요. 서로 다른 위치에서 같은 네 값을 고를 수 있더라도 사중항은 한 번만 나타납니다. 첫 번째 값, 두 번째 값, 세 번째 값 순으로 답을 정렬하세요. 조건을 만족하는 사중항이 없으면 빈 목록을 반환하세요.

함수

fourSum(nums: integer-array, target: integer) → integer-2d-array
numsinteger-array
선택할 수 있는 숫자는 최소 하나
targetinteger
각 4개 항의 합이 도달해야 하는 값
반환값integer-2d-array
합이 목표값인 서로 다른 네 원소 조합으로, 각 조합은 정렬되어 있고 목록도 정렬되어 있음; 해당 조합이 없으면 빈 목록

제약 조건

  • 1 ≤ nums.length ≤ 200
  • -108 ≤ nums[i] ≤ 108
  • -109 ≤ target ≤ 109
  • 어떤 네 값의 합은 -4 × 108과 4 × 108 사이에 있으므로 32비트 정수에 들어갑니다.
  • 같은 네 값을 가진 네쌍둥이는 하나로 셉니다.

예제

입력
nums = [3, -1, 0, 2, -2, 1, -3]target = 1
출력
[[-3, -1, 2, 3], [-3, 0, 1, 3], [-2, -1, 1, 3], [-2, 0, 1, 2]]
설명
네 개의 사중항은 각각 합이 1입니다. 예를 들어 -3 + (-1) + 2 + 3입니다. -3으로 시작하는 두 항목은 두 번째 값에 따라 정렬되어 -1이 0보다 먼저 옵니다.
challenge icon

후속 질문

서로 다른 네 수의 조합이 아니라, 값의 합이 target이 되는 네 위치의 조합 수를 세세요. 두 번째 예시에는 15개가 있습니다. O(n²)으로 할 수 있나요?

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

테스트 #1

테스트 #2

테스트 #3

인자들

nums = [3, -1, 0, 2, -2, 1, -3]
target = 1

예상 출력

[[-3, -1, 2, 3], [-3, 0, 1, 3], [-2, -1, 1, 3], [-2, 0, 1, 2]]