알고리즘 연습/브루트 포스
[🥈3 / 백준 10974 / 파이썬] 모든 순열
김세진
2021. 8. 18. 03:13
반응형
10974번: 모든 순열
N이 주어졌을 때, 1부터 N까지의 수로 이루어진 순열을 사전순으로 출력하는 프로그램을 작성하시오.
www.acmicpc.net
문제
N이 주어졌을 때, 1부터 N까지의 수로 이루어진 순열을 사전순으로 출력하는 프로그램을 작성하시오.
입력
첫째 줄에 N(1 ≤ N ≤ 8)이 주어진다.
출력
첫째 줄부터 N!개의 줄에 걸쳐서 모든 순열을 사전순으로 출력한다.
예제 입력3 |
예제 출력1 2 31 3 2 2 1 3 2 3 1 3 1 2 3 2 1 |
풀이
브루트 포스 알고리즘을 이용해 만들 수 있는 모든 순열을 사전순으로 출력하는 문제이다.
재귀를 이용하였으며, 재귀를 할 때 사용한 숫자를 리스트에서 제거하고 넘기는 방식으로 코드를 작성했다.
n = int(input())
s = [str(i+1) for i in range(n)]
def bf(arr,r):
if arr:
for i in range(n-len(r)):
temp = list(r)
temp.append(arr[i])
new_arr = arr[:i] + arr[i+1:]
bf(new_arr,temp)
else:
print(*r)
bf(s,[])
반응형