📊알고리즘, 문제풀이/📈문제풀이 (PS)

[알고리즘][Python] 백준 15652 N과 M (4) 문제 풀이

Written by Donghak Park

문제 출처 : www.acmicpc.net/problem/15652

 

15652번: N과 M (4)

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

www.acmicpc.net


문제 해석 : 1~N 까지의 수 중에서 중복을 허용하면서 M개의 수를 고를 수 있는 모든 경우를 출력하는 문제이다. 단 비내림차순 이여야 한다.

 

문제 풀이 : 재귀적으로 모든 경우를 체크하면서 배열을 만들고 M개가 되었을 때 출력한다.


풀이 코드

def make_answer(count, arr):

    if count > M:
        for element in arr:
            print(element, end=" ")
        print()
        return

    for i in range(1, N+1):
        if len(arr) == 0:
            arr.append(i)
            make_answer(count + 1, arr)
            arr.remove(i)

        elif i >= arr[-1]:
            arr.append(i)
            make_answer(count + 1, arr)
            arr.remove(i)

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

make_answer(1,[])

author : donghak park
contact : donghark03@naver.com

## 문제의 저작권은 백준 알고리즘 사이트에 있습니다. 혹시 문제가 되는 부분이 있으면 연락 바랍니다.