본문 바로가기
백준 알고리즘(BOJ)

백준 알고리즘 15664 (N과 M(10)) - python

by Think_why 2019. 10. 16.

[문제] 백준 알고리즘 15664 (N과 M(10)) - python

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

 

15664번: N과 M (10)

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

www.acmicpc.net

 

N과 M(9)에서 비내림차순 조건이 붙은 문제.

N과 M(9)와 같은 방법에서 idx로 i+1을 넘겨주어 range를 조정해주면 해결.

 

[Code]

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

L.sort()
visited = [False] * N
out = []

def solve(depth, idx, N, M):
    if depth == M:
        print(' '.join(map(str, out)))
        return
    overlap = 0
    for i in range(idx, N):
        if not visited[i] and overlap != L[i]:
            out.append(L[i])
            visited[i] = True
            overlap = L[i]
            solve(depth+1, i+1, N, M)
            out.pop()
            visited[i] = False

solve(0, 0, N, M)
728x90

댓글