[백준 문제] 6603번 로또 (파이썬)


[백준 문제] 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





© 2018. by statssy

Powered by statssy