알고리즘

[백준, 파이썬, 15650번] N과 M (2)

hminor 2023. 9. 13. 11:35
반응형

 

풀이

 

  • 해당 문제는 백트래킹 문제로 
  • 이전에 포스팅한 집합과 순열을 사용하면서 
  • itertools에 있는 메서드를 가지고 온거에 대한 찝찝함으로 백트래킹 문제를 하나 풀고 싶었다..핳
  • 무튼 해당 문제는 단순히 
  • cnt와 x를 1씩 증가 시키는 형식으로 하여
  • cnt가 m이 될 경우 출력하며, x는 범위를 지정해주는 역할로 사용
  • 그리고 li에 추가한 뒤 함수 실행 이후 return 되는 경우엔
  • 다시 가장 최근 값을 pop 함수로 빼내는 형식으로 백트래킹 문제를 해결 

 

def NM(cnt,x):
    global n,m
    if cnt == m:
        print(*li)
        return
    for i in range(x,n+1):
        li.append(i)
        NM(cnt+1,i+1)
        li.pop()
    return

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