Menu
CoddyTech

3Sum

정수 목록 nums가 주어집니다. nums의 서로 다른 세 위치에서 가져온 값으로 이루어진 모든 세 쌍 [a, b, c] 중 a + b + c = 0을 만족하는 것을 찾으세요. 각 세 쌍을 비내림차순(a ≤ b ≤ c)으로 작성하고, 여러 위치 조합에서 같은 세 쌍이 만들어지더라도 서로 다른 세 쌍은 한 번씩만 나열하세요. 첫 번째 값, 그다음 두 번째 값 순으로 정렬된 세 쌍을 반환하세요.

함수

threeSum(nums: integer-array) → integer-2d-array
numsinteger-array
최소 세 개의 요소를 가진 정수 목록
반환값integer-2d-array
합이 0이 되는 모든 고유한 세 항목 조합을 각각 비내림차순으로 나열하고, 목록은 정렬합니다

제약 조건

  • 3 ≤ nums.length ≤ 3000
  • -105 ≤ nums[i] ≤ 105
  • 세 수의 조합 중 적어도 하나의 합이 0입니다.
  • 두 트리플은 동일한 세 값을 가지고 있을 때 같습니다.

예제

입력
nums = [-2, 0, 1, 1, -1, 2]
출력
[[-2, 0, 2], [-2, 1, 1], [-1, 0, 1]]
설명
-2 + 0 + 2, -2 + 1 + 1, -1 + 0 + 1은 모두 0이 됩니다. [-2, 1, 1]은 1이 두 위치에 있으므로 값 1을 두 번 사용할 수 있지만, [-1, 0, 1]은 1 중 하나를 사용해 만들 수 있으며 한 번만 나타납니다.

lock icon제출 시 숨은 테스트 +15개

challenge icon

후속 질문

같은 패턴으로 4Sum을 해결할 수 있습니다. 두 값을 고정하고 나머지 값에 두 포인터를 적용하세요. O(n³) 시간 복잡도로 작성하면서 모든 단계에서 중복 규칙을 올바르게 처리할 수 있나요?

코드 초기화
def threeSum(nums):
    # 여기에 코드를 작성하세요
테스트 케이스

케이스 1

케이스 2

입력

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

기대값

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