문제 내용
주어진 배열의 원소를 사용하여 만든 배열의 합이 주어진 목표 값이 되는 배열들을 만들어 반환하는 문제이다.
LeetCode - Combination Sum과 거의 동일한 문제인데, 조건이 약간 다르다.
Combination Sum에서는 원본 배열에 중복된 요소가 없지만, 각 요소를 여러번 사용해도 되는 반면, Combination Sum II에서는 원본 배열에 중복된 요소가 있지만, 각 요소를 한번씩만 사용할 수 있다.
Back Tracking을 이용한 풀이
Back Tracking을 이용하여 풀이하면 된다. 다만 배열에 중복된 원소가 존재하고 한번씩만 사용해야 하기 때문에, 다음과 같이 접근해야 한다.
- 원본 배열을 정렬한다.
- 백트래킹 시 한 단계에서 동일한 원소를 1번 ~ N번까지 사용하고 다음 원소로 넘어가야 한다. 이렇게 안하고 한 단계에서 하나씩 꺼내쓰면 중복이 발생해보린다.