감자튀김 공장🍟

[백준/15649] N과 M (1) (with 파이썬) 본문

Algorithm/BOJ

[백준/15649] N과 M (1) (with 파이썬)

Potato potage 2022. 12. 26. 12:43
반응형

✔ 문제


풀이

🌱 itertools 없이 풀기 (재귀 사용)

import sys
input = sys.stdin.readline

def perm(arr, n):
    res = []
    if n == 0:
        return [[]]

    for i in range(len(arr)):
        x = arr[i]
        for j in perm(arr[:i] + arr[i+1:], n-1):
            res.append([x] + j)
    return res

n, m = map(int, input().split())
arr = [i for i in range(1, n+1)]
ans = perm(arr, m)

for i in ans:
    print(*i)

 

⭐ itertools 사용

from itertools import permutations

n, m = map(int, input().split())
numbers = []

for i in range(1, n+1):
    numbers.append(i)

perm = list(permutations(numbers, m))

for x in perm:
    print(*x)

후기

사실 itertools 모듈 사용해서 푸는 방법이 훨!씬! 간단하고 이해도 빠른데

나중에 모듈 없이 사용할 수도 있으니까 해당 방법으로도 풀어봤다.

근데 재귀가 이루어지는 과정이 잘 이해가 안가서 손으로 디버깅 해봤다 _¢(T-T*)

반응형
Comments