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

백준 알고리즘 15665 (N과 M(11)) - python

by Think_why 2019. 10. 16.

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

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

 

15665번: N과 M (11)

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

www.acmicpc.net

 

N과 M(10)에서 비내림차순 조건을 제외하고, 같은 수를 출력해도 되는 문제

 

1. 비내림차순 조건을 위해 사용했던 idx로 range 조절 방법을 뺀다.

2. 같은 수를 여러 번 골라도 되므로 visited 방법을 뺀다.

 

[Code]

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

L.sort()
out = []

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

solve(0, N, M)
728x90

댓글