본문 바로가기

백준 문제 풀이

[백준] 15560 "N과 M (2)" -python

 

알고리즘

 백트래킹을 통해 구현한다.

 

소스 코드

# N과 M 2
import sys
n, m = map(int, sys.stdin.readline().split())

arr = [0] * m # 수열 저장
isused = [False] * (n + 1)
s = set()

def func(k):
    if k == m:
        s.add(tuple(sorted(arr)))
        return
    for i in range(1, n + 1):
        if not isused[i]:
            arr[k] = i
            isused[i] = True
            func(k+1)
            isused[i] = False

func(0)
for i in sorted(list(s)):
    print(*i)

 

참고 : https://blog.encrypted.gg/945