[Python] 백준 / silver / 15649번 (N과 M (1))

김상우·2021년 10월 7일
0
post-custom-banner

문제 링크 : https://www.acmicpc.net/problem/15649

from itertools import permutation 을 활용하면 쉽게 풀릴 것을 알고 있었지만, 백트래킹 연습을 위해 백트래킹으로 풀어보았다.

trace 라는 리스트에 발자취를 남기며 백트래킹을 진행했다.

백트래킹 정답 코드

import sys

N, M = map(int, sys.stdin.readline().split())

num = [i for i in range(1, N + 1)]


def dfs(trace):
    if len(trace) == M:
        for t in trace:
            print(t, end=' ')
        print()
        return

    for i in range(1, N + 1):
        if not i in trace:
            trace.append(i)
            dfs(trace)
            trace.pop()


dfs([])

Permutation 정답 코드

from itertools import permutations
import sys

N, M = map(int, sys.stdin.readline().split())
permu = list(permutations(range(1, N+1), M))

for p in permu:
    for x in p:
        print(x, end=' ')
    print()

profile
안녕하세요, iOS 와 알고리즘에 대한 글을 씁니다.
post-custom-banner

0개의 댓글