문제 출처 : www.acmicpc.net/problem/15666
문제 해석 : N개의 자연수 중에서 M개를 선택하여 수열을 생성한다. 이때 N에는 중복된 수가 들어 있을 수 있으며 수열은 서로 중복되서는 안되고, 수열 속에서 같은 수가 중복 되어도 된다.
문제 풀이 : 재귀적으로 답을 만들어가고 이미 출력된 적이 있다면 이를 제외 해주면 된다.
풀이 코드
def make_answer(start, count, arr2):
global candidate
if count >= M:
if arr2 not in candidate:
temp = []
for element in arr2:
print(element, end = " ")
temp.append(element)
print()
candidate.append(temp)
return
else:
return
for i in range(start, N):
arr2.append(arr[i])
make_answer(i, count+1, arr2)
arr2.remove(arr[i])
N, M = map(int, input().split())
arr = list(map(int, input().split()))
arr.sort()
candidate = []
make_answer(0, 0, [])
author : donghak park
contact : donghark03@naver.com
## 문제의 저작권은 백준 알고리즘 사이트에 있습니다. 혹시 문제가 되는 부분이 있으면 연락 바랍니다.
'📊알고리즘, 문제풀이 > 📈문제풀이 (PS)' 카테고리의 다른 글
[알고리즘][Python] 백준 17144 미세먼지 안녕! 문제 풀이 (0) | 2021.02.04 |
---|---|
[알고리즘][Python] 백준 16953 A-->B 문제 풀이 (0) | 2021.02.01 |
[알고리즘][Python] 백준 15663 N과 M (9) 문제 풀이 (0) | 2021.01.30 |
[알고리즘][Python] 백준 15657 N과 M (8) 문제 풀이 (0) | 2021.01.30 |
[알고리즘][Python] 백준 14938 서강그라운드 문제 풀이 (0) | 2021.01.30 |