본문 바로가기
알고리즘

[백준] 15665번: N과 M (11) - python

by 육빔 2024. 4. 9.
728x90
반응형

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

 

15665번: N과 M (11)

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

www.acmicpc.net

 

아이디어

 

중복을 허용하지 않고 사전 순으로 진행.

아까와 부분집합과는 다르게 뿌리를 펼치면서 상태트리 값이 중복인지만 체크하면 됨으로 remeber 변수에 arr[i]을 저장시켜 중복을 제거할 수 있도록 설계.

def DFS(L):
    if L == m:
        for i in range(m):
            print(res[i], end=" ")
        print()
    else:
        remember = 0
        for i in range(n):
            if remember != arr[i]:
                res[L] = arr[i]
                remember = arr[i]
                DFS(L+1)

n, m = map(int, input().split())
arr = list(map(int, input().split()))
res = [0] * m
arr.sort()
DFS(0)

 

완성

728x90
반응형