while True:
arr = input() # 입력을 받음
if arr == "0": # 입력이 "0"이면 종료
break
arr = list(map(int, arr.split())) # 입력을 공백으로 분리하여 정수 리스트로 변환
n = arr.pop(0) # 첫 번째 값을 n으로 설정하고 리스트에서 제거
# 중복 없는 조합 생성 함수
def combinations(n, new, c):
answer = []
if len(new) == n: # 조합의 길이가 목표(n)에 도달하면 반환
return [new]
for i in range(c, len(arr)): # 현재 인덱스(c)부터 반복
answer.extend(combinations(n, new + [arr[i]], i + 1)) # 다음 단계로 이동
return answer
# 조합 생성 및 출력
ls = combinations(6, [], 0) # 길이가 6인 조합 생성
for a in ls:
print(' '.join(map(str, a))) # 조합을 공백으로 구분하여 출력
print() # 각 테스트 케이스 사이에 빈 줄 출력
풀이
1. 입력을 반복해서 받으며, 각 입력을 공백으로 나눠 정수 리스트로 변환한다.
2. 첫 번째 숫자는 리스트에서 제거하고, 나머지 숫자로부터 길이가 6인 조합을 생성한다.
3. 조합 생성은 재귀적으로 진행하며, 현재 조합의 길이가 6이 되면 결과에 추가한다.
4. 생성된 모든 조합을 순회하며 공백으로 구분해 출력한다.
5. 각 테스트 케이스 사이에는 빈 줄을 출력하며, 입력이 "0"이면 프로그램을 종료한다.