알고리즘

(파이썬) 백준 알고리즘 - 15652번

joy_lee 2021. 8. 31. 20:10

N과 M (4)

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

 

15652번: N과 M (4)

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

www.acmicpc.net

이번엔 수열이 중복된 수로 구성될 수 있지만, 앞의 수보다 뒤의 수가 커야 한다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
N, M = list(map(int,input().split()))
 
numbers = []
 
def add_number(num):
    if len(numbers) == M:
        print(' '.join(map(str, numbers)))
        return
        
    for i in range(num, N+1):
        numbers.append(i)
        add_number(i)
        numbers.pop()
 
add_number(1)
cs

add_number 함수에 변수를 받아 앞의 수가 무엇인지 확인할 수 있도록 했다.

그리고 앞의 수와 같은 수부터 N까지의 수를 추가할 수 있도록 작성했다.