최대 1 분 소요

코드

# 15651번 
n,m = list(map(int,input().split()))

# 백트래킹을 위해 사용되는 리스트 s 
s = []
 
def dfs():
    # 재귀함수의 조건 특정 입력에 대해서는 자기자신을 
    # 호출하지않고 종료되어야함 (Base condition)
    # 또한 모든 입력은 base condition 으로 수렴해야함
    if len(s)==m:
        # " "을 띄우고 s 를 출력하는방법
        print(' '.join(map(str,s)))
        return
    
    for i in range(1,n+1):
        if i not in s:
            # 중복이 없으면 더해짐
            s.append(i)
            # 재귀함수를 반복하며 중복이 없는 수를 추가
            dfs()
            # base 컨디션을 만족하면 출력후 pop 하여 한칸 한칸 비운다
            # 이후 남겨진 재귀함수의 반복문이 실행되며 다시 리스트에 값을 추가하며 이를 반복
            s.pop()
dfs()

마무리

백트래킹의 기초적인 문제이다. 처음 공부할때는 정말 아에 모르겠어서 이 풀이를 이해하는데만

2일이나 걸렸다.

카테고리:

업데이트:

댓글남기기