알고리즘

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

joy_lee 2021. 8. 31. 19:40

N과 M (3)

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

 

15651번: N과 M (3)

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

www.acmicpc.net

15651번이 이전 문제들과 다른 점은 수열을 중복된 수로 구성할 수 있다는 점이다.

이전에 만든 코드에서 함수 내부만 조금 바꾸면 된다.

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():
    if len(numbers) == M:
        print(' '.join(map(str, numbers)))
        return
        
    for i in range(1, N+1):
        numbers.append(i)
        add_number()
        numbers.pop()
 
add_number()
cs

15650번에서는 add_number 함수가 변수를 입력받아 그 변수를 제외한 수들을 추가하도록 만들었는데

15651번은 중복이 가능하기 때문에 함수가 변수를 따로 입력받지 않고 뒤에 추가할 수를 range(1, N+1)로 구성했다.