본문 바로가기

PS

[BOJ] 15665번 N과 M (11) 문제

www.acmicpc.net/problem/15665

 

15665번: N과 M (11)

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

www.acmicpc.net

 

같은 수가 여러번 주어져도 무시하고 중복순열로 뽑으면 된다.

 

따라서 set 을 이용해서 중복을 제거하고 다시 list 로 바꿔서 그냥 중복순열을 뽑아냈다.

 

 


N, M = map(int, input().split())

numbers = list(map(int, input().split()))
numbers = list(set(numbers))
numbers.sort()

element = []
def dfs(depth):

    if depth == M:
        print(*element)
        return

    for i in range(len(numbers)):
        element.append(numbers[i])
        dfs(depth + 1)
        element.pop()

dfs(0)

 

'PS' 카테고리의 다른 글

[BOJ] 15666번 N과 M (12) 문제 - Python  (0) 2021.03.04
[BOJ] 15664번 N과 M (10) 문제  (0) 2021.03.03
[BOJ] 2153번 소수 단어 문제  (0) 2021.01.19
BOJ - 2133번 타일 채우기  (0) 2020.09.08
BOJ - 1699번 제곱수의 합  (0) 2020.09.08