https://www.acmicpc.net/problem/15649
n, m = map(int, input().split())
visited = [False] * n
arr = []
def dfs(cnt):
# 수열이 m 자리수가 되면 종료
if cnt == m:
print(*arr) # 리스트내의 모든 원소 출력
return
for i in range(n):
if visited[i]: # 이미 사용한 수라면, 방문했다면
continue
arr.append(i + 1) # 수열에 추가
visited[i] = True # 사용한 수(방문) 체크
dfs(cnt + 1) # 다음 수열을 위한 재귀함수
arr.pop() # 수열의 마지막 자리 삭제
visited[i] = False # 사용한 수 초기화
dfs(0)
728x90
'SW개발 > 코딩테스트' 카테고리의 다른 글
[프로그래머스]소수 찾기 - 완전탐색 (0) | 2021.10.11 |
---|---|
[프로그래머스]모의고사 - 완전탐색 (0) | 2021.10.11 |
[백준]1065번 한수 - 완전 탐색 (0) | 2021.02.25 |
[백준]1436번 영화감독 숌 - 완전 탐색 (0) | 2021.02.24 |
[백준]1018번 체스판 다시 칠하기 - 완전 탐색 (0) | 2021.02.23 |