Algorithm Problems

[백준] [Python] N과 M (3) - 백트래킹

WakaraNai 2021. 5. 6. 00:41
728x90
반응형

www.acmicpc.net/problem/15651

 

15651번: N과 M (3)

한 줄에 하나씩 문제의 조건을 만족하는 수열을 출력한다. 중복되는 수열을 여러 번 출력하면 안되며, 각 수열은 공백으로 구분해서 출력해야 한다. 수열은 사전 순으로 증가하는 순서로 출력해

www.acmicpc.net

 

 

 

Python

n, m = map(int, input().split())


arr = [0]*(n+1)
#visit = [0]*(n+1)
result = []
def backtracking(k):
    if (k == m):
        result.append(arr[:m])
        return
    for i in range(1, n+1):
        #if visit[i] == 0:
        arr[k] = i
        #    visit[i] = 1
        #    print(visit, arr)
        backtracking(k+1)
        #    visit[i] = 0
        #    print(visit, arr)
backtracking(0)

for x in result:
    for i in range(m):
        print(x[i], end=" ")
    print()

 

 

짧은 풀이

  • 중복을 허용하므로 visit 리스트가 필요 없다
728x90
반응형