n과 m(1) (백준 알고리즘)

파랑·2021년 11월 27일
0

dfs를 통해
모든 노드가 1에서 n까지의 하위 노드를 깊이 우선 탐색하도록 하여
사전순으로 출력 되도록 하였음.
반복문 중첩을 통하여 해결하려고 했으나 잘 되지 않아서 블로그를 참조하였음
(https://wlstyql.tistory.com/56)
이런 문제가 나오면 완전 탐색중 DFS 알고리즘을 사용하는 것이 좋다는 것을 알게 되었고
다음에 DFS문제에 접근을 더 잘 할 수 있을것 같음.
기본적인 알고리즘을 빠르게 구현하지 못한게 아직 많이 부족하다는 생각이 든다.


n, m = map(int, input().split())
visited = [False] * n # 탐사 노드
result = [] # 출력

def solve(depth, n, m):
    if depth == m:
        print(' '.join(map(str, result))) #결과를 띄어쓰기 하여 출력
        return
    for i in range(len(visited)):
        if visited[i] == False:
            visited[i] = True
            result.append(i + 1)
            solve(depth + 1, n, m) #dfs
            visited[i] = False
            result.pop()
        
solve(0, n, m)

0개의 댓글