알고리즘 문제 풀기/백준(Baekjoon)
[백준 알고리즘] 15649. N과 M (1) - 순열
hibscus
2021. 3. 20. 17:12
간단한 순열을 푸는 문제다.
왠지 순열문제는 기분이 나쁘다... ㅋㅋㅋㅋㅋㅋㅋ
중복되지 않는 순열이기에 visited로 중복검사가 필요하다.
만약 중복 순열이라면 visited를 빼면 된다.
N, M = map(int, input().split())
num = []
visited = [0 for _ in range(N)]
def perm(idx):
if idx == M:
print(" ".join(map(str, num)))
return
for i in range(N):
if visited[i] == 0:
num.append(i+1)
visited[i] = 1
perm(idx+1)
num.pop()
visited[i] = 0
perm(0)
이것보다 더 빠르고 간단하게 순열을 구하려면 itertools에서 permutations를 import해서 사용하면된다.
from itertools import permutations
N, M = map(int, input().split())
P = permutations(range(1, N+1), M) \
for i in P:
print(' '.join(map(str, i)))