반응형
문제
N이 주어졌을 때, 1부터 N까지의 수로 이루어진 순열을 사전순으로 출력하는 프로그램을 작성하시오.
입력
첫째 줄에 N(1 ≤ N ≤ 8)이 주어진다.
출력
첫째 줄부터 N!개의 줄에 걸쳐서 모든 순열을 사전순으로 출력한다.
풀이
n = int(input())
a = [i for i in range(1,n+1)]
ans = []
def backtracking(depth):
if depth == n:
print(" ".join(map(str,ans)))
return
for i in range(n):
if a[i] in ans:
continue
ans.append(a[i])
backtracking(depth+1)
ans.pop()
backtracking(0)
이 문제는 15654번: N과 M(5)와 비슷한 문제이다.
15654번의 코드에서 입력받는 것만 수정해 주면 동일한 문제이다.
1부터 N까지의 수로 이루어진 순열이므로 입력받은 N까지 list를 만들어 주고, 똑같이 백트래킹을 해가면 된다
반응형
'Develop > 알고리즘' 카테고리의 다른 글
[백준/Python] Bronze II #17946 피자는 나눌 수록 커지잖아요 (0) | 2023.01.27 |
---|---|
[백준/Python] Silver IV #1049 기타줄 (0) | 2023.01.27 |
[백준/Python] Silver III #15654 N과 M (5) (0) | 2023.01.26 |
[백준/Python] Bronze I #11655 ROT13 (0) | 2023.01.26 |
[백준/Python] Silver III #14501 퇴사 (0) | 2023.01.26 |
Comment