알고리즘

[백준, 파이썬, 15652번] N과 M (4)

hminor 2023. 9. 25. 10:48

 

풀이

 

  • 해당 문제는 백트래킹 문제로 현재 위치의 값을 변경 후 
  • 끝에 도달했다면 처리 후 돌아와서 
  • 초기 값인 0 으로 변경하는 문제이며
  • 여기서 다른 문제와의 차별점으로는 
  • 이후의 값의 시작값이 이전의 값부터 시작한다는 것이 다르다.
  • 그래서 아래와 같이 s ~ n+1 값 까지 반복하게 되는데
  • 반복문으로부터 나온 i의 값을 다시 함수의 s로 보내서 
  • 해당 값부터 시작하도록 하여 문제를 해결

 

import sys

def find(s,cnt):
    global n,m
    if cnt == m:
        print(*li)
        return
    for i in range(s,n+1):
        li[cnt] = i
        find(i,cnt+1)
        li[cnt] = 0

input = sys.stdin.readline
n,m = map(int,input().split())
li = [0]*m
find(1,0)