알고리즘/백준

[백준] 15650 .N과 M(2)

빙빙 2021. 4. 20. 17:45
def dfs():
    if len(s) == M:
        print(' '.join(map(str,s)))
        return
    for i in range(1, N+1):
        if i in s: # 가지치기, 이미 선택한 숫자 배제
            continue
        if len(s) > 0: #리스트 안에 존재할 때
            if s[-1] > i: #맨 끝 원소가 i보다 작을 때는 넘겨버린다.(오름차순 만들기 위함)
                continue
        s.append(i)
        dfs() #함수호출
        s.pop() # 출력 후 return하고 마지막 원소 비우기

N, M = map(int, input().split())
s = []
dfs()