문제 출처 : www.acmicpc.net/problem/15652
문제 해석 : 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
## 문제의 저작권은 백준 알고리즘 사이트에 있습니다. 혹시 문제가 되는 부분이 있으면 연락 바랍니다.
'📊알고리즘, 문제풀이 > 📈문제풀이 (PS)' 카테고리의 다른 글
[알고리즘][Python] 백준 10830 행렬 제곱 문제 풀이 (0) | 2021.01.27 |
---|---|
[알고리즘][Python] 백준 9935 문자열 폭발 문제 풀이 (0) | 2021.01.27 |
[알고리즘][Python] 백준 15650 N과 M (2) 문제 풀이 (0) | 2021.01.26 |
[알고리즘][Python] 백준 9663 N-Queen 문제 풀이 (0) | 2021.01.26 |
[알고리즘][Python] 백준 9465 스티커 문제 풀이 (0) | 2021.01.25 |