백트래킹 문제다. 조합을 백트래킹으로 푸는 방법은
check
불리언 값 참/거짓 변경과 함께 현재 어떤 인덱스까지 체크했는지 재귀 파라미터로 넘겨주는 것.
import sys
def get_lotto(cnt, num, start_idx):
if cnt == 6:
print(*num)
return
for i in range(start_idx, k):
if not check[i]:
check[i] = True
get_lotto(cnt + 1, num + [numbers[i]], i)
check[i] = False
while True:
numbers = list(map(int, sys.stdin.readline().rstrip().split()))
k = numbers.pop(0)
if k == 0: break
check = [False for _ in range(k)]
get_lotto(0, [], 0)
print()