{}연습장
대시보드학습스킬 경로문제모의고사라이브 코테복습데이터
문제 목록〉해시〉부품 편차 세 개로 목표 맞추기← 이전다음 →
#026 · 해시중간정렬 + 투 포인터,중복 제거

부품 편차 세 개로 목표 맞추기

문제

정밀 조립 라인에서는 각 부품의 무게를 기준값과 비교한 편차(단위 mg)를 기록합니다. 편차는 기준보다 무거우면 양수, 가벼우면 음수입니다.

품질팀은 창고에 있는 부품 중 서로 다른 세 개를 골라 편차의 합이 목표값 target과 정확히 일치하는 조합이 몇 가지인지 알고 싶어 합니다. 이때 편차 값의 구성이 같으면 같은 조합으로 봅니다. 예를 들어 편차가 -2인 부품이 두 개 있더라도 (-2, 0, 2) 조합은 어떤 부품을 골랐든 한 가지로 셉니다.

편차 배열 parts와 목표 합 target이 주어질 때, 조건을 만족하는 서로 다른 조합의 개수를 반환하는 solution(parts, target) 함수를 작성하세요.

예시

parts target 결과
[4, 1, 7, 3, 6, 2, 5] 12 5
[-2, 0, 2, 2, -2, 4] 0 2
[1, 2, 4] 10 0

예시 1 설명: (1,4,7), (1,5,6), (2,3,7), (2,4,6), (3,4,5) 다섯 가지입니다.

예시 2 설명: (-2,-2,4)와 (-2,0,2) 두 가지입니다. 2가 두 개, -2가 두 개 있지만 값 구성이 같은 조합은 한 번만 셉니다.

제약 조건

  • 0 ≤ parts.length ≤ 3,000
  • -100,000 ≤ parts[i] ≤ 100,000, -300,000 ≤ target ≤ 300,000
  • 같은 부품(같은 인덱스)을 두 번 고를 수 없습니다.
  • 부품이 3개 미만이면 0을 반환합니다.

시간 복잡도 목표: O(n²)

테스트 케이스

예시 1: 합이 12인 조합 5가지
입력: parts = [4,1,7,3,6,2,5], target = 12
출력: 5
예시 2: 중복 값이 있어도 조합은 한 번만
입력: parts = [-2,0,2,2,-2,4], target = 0
출력: 2
예시 3: 만족하는 조합 없음
입력: parts = [1,2,4], target = 10
출력: 0
부품이 3개 미만
입력: parts = [3,3], target = 6
출력: 0
모두 같은 값 → 조합 1가지
입력: parts = [2,2,2,2], target = 6
출력: 1
중복 값이 섞인 배열
입력: parts = [1,1,2,3,4,5], target = 8
출력: 2
solution.ts
에디터 로딩 중…

▶ 실행은 기록 없이 채점만, 제출은 결과가 진행률·오답노트에 기록됩니다.