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

2021. 4. 5. 12:24발돋움/알고리즘

728x90
반응형

중복없이 오름차순으로 6자리의 순열을 만들면된다.

이때 테스트 케이스 사이에만 빈줄이 하나 출력되어야 한다.

재귀로 풀되 조건을 만족할때에만 순열을 만들도록 코드를 짜면 된다.

def solve(idx):
    if idx == 6:
        print(' '.join(map(str, result)))
        return
    for i in range(k):
        if visit[i]:
            continue
        if idx != 0 and result[idx - 1] > s[i]:
            continue
        result.append(s[i])
        visit[i] = True
        solve(idx + 1)
        result.pop()
        visit[i] = False
        
cnt = 0
while True:
    s = list(map(int, input().split()))
    k = s[0]
    del s[0]
    if k == 0:
        break
    if cnt != 0:
        print()
    visit = [False] * k
    result = []
    solve(0)
    cnt += 1

 

728x90
반응형