https://www.acmicpc.net/problem/1182
n, s = map(int, input().split())
lst = list(map(int, input().split()))
pair = ()
cnt = 0
def btracking(start):
global cnt
if sum(pair) == s and len(pair) > 0:
cnt += 1
for i in range(start, n):
pair.append(lst(i))
btracking(i + 1)
pair.pop()
btracking(0)
print(cnt)
저번에 풀었던 n과 m과 달리 (1, 3)과 (3, 1)이 같으므로 중복을 허용하지 않는 조합 문제였습니다.
코드의 차이점은 중복을 허용하는 순열은 처음부터 루프를 만들지만 중복을 허용하지 않는 조합은 반복문이 특정 숫자 이후에만 실행되도록 하여 이전 숫자가 다시 입력되지 않도록 하는 것입니다.
.