알고리즘

[BOJ/백트래킹] N과 M (3)

motti 2023. 5. 23. 09:05
반응형

문제 링크 : https://www.acmicpc.net/problem/15651

 

15651번: N과 M (3)

한 줄에 하나씩 문제의 조건을 만족하는 수열을 출력한다. 중복되는 수열을 여러 번 출력하면 안되며, 각 수열은 공백으로 구분해서 출력해야 한다. 수열은 사전 순으로 증가하는 순서로 출력해

www.acmicpc.net


풀이

n,m = map(int,input().split())

answer = [0]*m

def backtracking(L,s):
		# 길이가 m이라면 출력
    if L == m:
        for j in answer:
            print(j, end= " ")
        print()
        return
		# 1부터 n+1까지 반복문
    for i in range(1,n+1):
        answer[L] = i
        backtracking(L+1,s+1) # 같은 수를 허락하지 않으므로 s+1

backtracking(0,1)
  1. 조합문제에서 순열로 바뀜(이전 포스팅에 조합 풀이 있음)
  2. 순서가 의미 있기 때문에 for문의 시작은 1, 재귀함수는 s+1을 적용하여 1,2,3 ~~ 반복이 가능해야함
  3. 조합의 경우 시작은 s , 재귀함수는 i+1
반응형