[문제 출처]
기본적인 순열을 구현하는 문제이다.
여러 문제를 풀어 오면서 순열을 이용하는 문제를 여러 번 만났지만 직접 순열을 구현한 적은 없었다.
(python은 itertools 라이브러리를 이용하면 편리하게 순열을 계산할 수 있다.)
이 문제를 만나 처음으로 순열을 구현해봤는데 쉽지 않았다.
다른 자료를 참고해서 공부한 후 구현한 코드는 아래와 같다.
전체 코드
import sys
def permutation(data, n):
res = []
if n == 1:
res = [[e] for e in data]
elif n >= 2:
for t in data:
excluded = data[:]
excluded.remove(t)
excludedPermutation = permutation(excluded, n-1)
for case in excludedPermutation:
res.append([t]+case)
return res
N, M = map(int, sys.stdin.readline().split(" "))
results = permutation(list(range(1, N+1)), M)
for res in results:
print(" ".join(map(str, res)))
'PS > Python' 카테고리의 다른 글
[백준] 10816 숫자 카드 2 (파이썬, Python) (0) | 2021.03.31 |
---|---|
[백준] 15650 - N과 M (2) (파이썬, Python) (0) | 2021.03.30 |
2020 카카오 인턴십_수식 최대화(파이썬, Python) (0) | 2021.02.14 |
[백준] 1012 - 유기농 배추(파이썬, Python) (0) | 2020.07.29 |
[백준] 7576 - 토마토 (파이썬, Python) (0) | 2020.07.29 |