KEEP GOING

[python] 백준 15649번 : N과 M(1) 본문

code review/bfs-dfs

[python] 백준 15649번 : N과 M(1)

jmHan 2022. 5. 29. 11:59
반응형

https://www.acmicpc.net/problem/15649

 

15649번: N과 M (1)

한 줄에 하나씩 문제의 조건을 만족하는 수열을 출력한다. 중복되는 수열을 여러 번 출력하면 안되며, 각 수열은 공백으로 구분해서 출력해야 한다. 수열은 사전 순으로 증가하는 순서로 출력해

www.acmicpc.net

 

이 문제의 경우 대표적으로 DFS를 사용하여 순열을 구하는 문제입니다.

DFS를 사용하여 조합을 구하는 문제가 궁금하다면 아래 링크를 참고하시면 됩니다.

https://dogsavestheworld.tistory.com/269

 

[python] 백준 15650번 : N과 M(2)

https://www.acmicpc.net/problem/15650 15650번: N과 M (2) 한 줄에 하나씩 문제의 조건을 만족하는 수열을 출력한다. 중복되는 수열을 여러 번 출력하면 안되며, 각 수열은 공백으로 구분해서 출력해야 한다.

dogsavestheworld.tistory.com

 

[dfs]

def dfs(arr):
    global visited

    if len(arr) == M:
        print(*arr)
        return

    for i in range(N):
        if not visited[i]:
            visited[i] = True
            arr.append(lst[i])
            dfs(arr)
            visited[i] = False
            arr.pop()


N, M = map(int, input().split())
visited = [False for _ in range(N)]
lst = [i for i in range(1, N+1)]
dfs([])
반응형
Comments