15654 N과M(5) _python

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

     

    15654번: N과 M (5)

    N개의 자연수와 자연수 M이 주어졌을 때, 아래 조건을 만족하는 길이가 M인 수열을 모두 구하는 프로그램을 작성하시오. N개의 자연수는 모두 다른 수이다. N개의 자연수 중에서 M개를 고른 수열

    www.acmicpc.net

     

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

     

     

    문제 접근

    백트래킹

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

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

    arr을 미리 입력받고 sort해준다.

    그리고 N과M(1)과 같은 방식으로 dfs를 해주면 풀릴 것이다.

     

     

     

    코드

    import sys
    input = sys.stdin.readline
    
    """
    1. 2번째로 받은 input인 arr 정렬하기
    2. dfs사용
    """
    
    N, M = map(int,input().split())
    arr = list(map(int,input().split()))
    arr.sort()
    ans = []
    
    def dfs():
        if len(ans)==M:
            print(*ans)
            return
        for i in arr:
            if i not in ans:
                ans.append(i)
                dfs()
                ans.pop()
    
    dfs()

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

    15656 N과M(7) _python  (0) 2022.10.17
    15655 N과M(6) _python  (0) 2022.10.17
    15652 N과M(4) _python  (0) 2022.10.17
    15651 N과M(3) _python  (0) 2022.10.17
    15650 N과M(2) _python  (0) 2022.10.17

    댓글