본문 바로가기
Develop/알고리즘

[백준/Python] Silver III #10974 모든 순열

by favorcat 2023. 1. 26.
반응형
 

10974번: 모든 순열

N이 주어졌을 때, 1부터 N까지의 수로 이루어진 순열을 사전순으로 출력하는 프로그램을 작성하시오.

www.acmicpc.net

문제

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를 만들어 주고, 똑같이 백트래킹을 해가면 된다

반응형

Comment