본문 바로가기
Sketch (Programming Language)/Python

Baekjoon Training #15649

by 생각하는 이상훈 2023. 1. 15.
728x90

#15649

백트래킹 알고리즘에 대해서 공부하기 위해서 문제들을 풀어보고자하는데 우선 백트래킹 알고리즘은 DFS 방식을 기반으로 불필요한 경우를 배제하며 정답을 탐색하는 전략이다. DFS를 기반으로 하기 때문에 stack을 이용하여 퇴각을 하면서 다음 탐색을 진행하기 때문에 백트래킹이라고 불린다. 

 

#N,M 입력
N,M=map(int,input().split())

#빈 리스트 만들어둠
s = []

#dfs기반의 함수
def dfs():
    #s의 길이가 M이되면 입력중지하고 출력해줌
    if len(s) == M:
        print(' '.join(map(str,s)))
        return
    
    #s의 길이가 M이 아닌경우 N회 반복
    for i in range(1, N + 1):
        if i in s:  #이미 존재하는 수인 경우 넘어감
            continue
        s.append(i) #리스트에 수 입력
        dfs()       #재귀호출
        s.pop()     #재귀호출 종료되면 제거
        
dfs()   #함수실행

 

728x90

'Sketch (Programming Language) > Python' 카테고리의 다른 글

Baekjoon Training #15650  (0) 2023.01.21
Baekjoon Training #2751  (0) 2023.01.21
Baekjoon Training #2178  (0) 2023.01.10
Baekjoon Training #2563  (0) 2023.01.07
Baekjoon Training #2738  (0) 2023.01.05