반응형
문제
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,[])
반응형
'알고리즘 연습 > 브루트 포스' 카테고리의 다른 글
[🥈2 / 백준 1182 / 파이썬] 부분수열의 합 (0) | 2021.10.02 |
---|---|
[🥈2 / 백준 2304 / 파이썬] 창고 다각형 (0) | 2021.09.28 |
[🥇5 / 백준 1107 / 파이썬] 리모컨 (0) | 2021.08.11 |
[🥈4 / 백준 14501 / 파이썬] 퇴사 (0) | 2021.07.22 |
[🥈3 / 백준 9095 / 파이썬] 1, 2, 3 더하기 (0) | 2021.07.13 |