[백준 백트래킹, 순열] N과 M (1)(python)

이진규·2022년 2월 8일
1

백준(PYTHON)

목록 보기
36/115

문제

https://www.acmicpc.net/problem/15649

나의 코드

"""
1. 아이디어


2. 시간복잡도

"""

# ① 재귀를 이용한 백트래킹 풀이
from sys import stdin
input = stdin.readline

n, m = map(int, input().split())
res = []
visited = [False] * (n+1)

def btr(dep):
    if dep == m:
        print(*res)
        return

    for i in range(1, n+1):
        if not visited[i]:
            visited[i] = True
            res.append(i)
            btr(dep+1)
            visited[i] = False
            res.pop()

btr(0)

# ② 순열 라이브러리를 이용한 풀이
from itertools import permutations
from sys import stdin
input = stdin.readline

n, m = map(int, input().split())
nums = [ x for x in range(1, n+1) ]

p = list(permutations(nums, m)) # 순열 - nums 리스트의 숫자 중에서 m개를 중복없이 뽑는 경우

for num in p:
    print(*num)
    
profile
항상 궁금해하고 공부하고 기록하자.

0개의 댓글