15652 N과M(4) _python

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

     

    15652번: N과 M (4)

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

    www.acmicpc.net

     

    12개의 비슷한 문제가 있는 문제 (1)~(12)

     

     

    문제 접근

    백트래킹

    문제를 읽어보면 끝자리를 계속 바꿔나가니 스택으로 접근하기 가장 알맞아보인다.

    스택으로 접근하는데 모든경우를 탐색한다는 것은 dfs를 사용하면 쉽게 풀린다.

     

     

     

    코드

    import sys
    input = sys.stdin.readline
    
    """
    
    """
    
    N, M = map(int,input().split())
    arr = []
    
    def dfs(x):
        if len(arr)==M:
            print(*arr)
            return
        for i in range(x,N+1):
            arr.append(i)
            dfs(i)
            arr.pop()
    
    dfs(1)

    '백준 > 문제풀이_python' 카테고리의 다른 글

    15655 N과M(6) _python  (0) 2022.10.17
    15654 N과M(5) _python  (0) 2022.10.17
    15651 N과M(3) _python  (0) 2022.10.17
    15650 N과M(2) _python  (0) 2022.10.17
    15649 N과M(1) _python  (0) 2022.10.17

    댓글