BOJ-15663 - Python

n개의 수를 m개의 수열로 만들어서 출력하되 n개의 수 중에 중복된 수가 있으며, 중복된 수열은 출력하지 않는 조건이 있는 백트래킹 문제. 깊이를 비교하여 출력하며 반복문의 현재 값과 다음 값이 같지 않을 때를 확인하여 풀었다.

def bt(depth):
    if depth == m:
        print(*ans)
        return

    temp = 0
    for i in range(n):
        if not visit[i] and temp != l[i]:
            visit[i] = True
            ans.append(l[i])
            temp = l[i]
            bt(depth+1)
            visit[i] = False
            ans.pop()


n, m = map(int, input().split())
l = sorted(map(int, input().split()))
visit = [False for _ in range(n)]
ans = []
bt(0)

Written by@hyesungoh
Learning every moment

InstagramGitHubLinkedIn