[백준 문제] 6603번 로또 (파이썬)
# 다음 순열 구하는 함수
def next_permutation(a):
n = len(a) - 1
i = n
while i > 0 and a[i-1] >= a[i]:
i -= 1
if i == 0:
return False
j = n
while a[i-1] >= a[j]:
j -= 1
a[i-1], a[j] = a[j], a[i-1]
j = n
while i < j:
a[i], a[j] = a[j], a[i]
i += 1
j -= 1
return True
# n이 0 될 때까지 while문 돌리기, loc에 0 1로 이루어진 값 넣고 변환시키기
while True :
n, *a = map(int, input().split())
if n == 0 :
break
loc = [0]*6+[1]*(n-6)
while True :
ans = []
for i in range(n) :
if loc[i] == 0 :
ans.append(a[i])
for j in ans:
print(j, end=' ')
print()
if next_permutation(loc) is False:
break
print()
7 1 2 3 4 5 6 7
1 2 3 4 5 6
1 2 3 4 5 7
1 2 3 4 6 7
1 2 3 5 6 7
1 2 4 5 6 7
1 3 4 5 6 7
2 3 4 5 6 7
8 1 2 3 5 8 13 21 34
1 2 3 5 8 13
1 2 3 5 8 21
1 2 3 5 8 34
1 2 3 5 13 21
1 2 3 5 13 34
1 2 3 5 21 34
1 2 3 8 13 21
1 2 3 8 13 34
1 2 3 8 21 34
1 2 3 13 21 34
1 2 5 8 13 21
1 2 5 8 13 34
1 2 5 8 21 34
1 2 5 13 21 34
1 2 8 13 21 34
1 3 5 8 13 21
1 3 5 8 13 34
1 3 5 8 21 34
1 3 5 13 21 34
1 3 8 13 21 34
1 5 8 13 21 34
2 3 5 8 13 21
2 3 5 8 13 34
2 3 5 8 21 34
2 3 5 13 21 34
2 3 8 13 21 34
2 5 8 13 21 34
3 5 8 13 21 34
0