리스트 path에 저장시키면서, 일정 깊이에 도달했을 때, path를 출력하는 순열 코드에서
얕은 복사를 이용해 path를 paths로 복사한 후,
paths를 정렬 후 리스트path_wrap와 비교해서 존재하지 않는 다면 추가하고,
출력할때 for문을 이용해서 출력하는 방식을 사용했다.
n,m = map(int,input().split())
path = []
path_wrap = []
visited = [False] * (n+1)
def perm(level):
if level ==m:
paths = path[:]
paths.sort()
if paths not in path_wrap:
path_wrap.append(paths)
return
for i in range(1,n+1):
if visited[i]: continue
visited[i] = True
path.append(i)
perm(level+1)
path.pop()
visited[i] = False
perm(0)
for i in path_wrap:
print(*i)
'알고리즘 문제풀이' 카테고리의 다른 글
백준 2178 미로 탐색 Python 실버 1 그래프, BFS (1) | 2024.03.22 |
---|---|
백준 2667 단지번호 붙이기 Python 실버1 그래프 BFS (0) | 2024.03.22 |
Swea D3_11780. 그룹 나누기 Python DFS (0) | 2024.03.20 |
백준 15649. N과 M (1) Python 백트래킹 실버3 (0) | 2024.03.20 |
백준 2941 크로아티아 알파벳 Python 구현 문자열실버5 (0) | 2024.03.19 |