728x90
n, m = map(int, input().split())
answer = list(map(int, input().split()))
answer.sort()
result = []
def dfs(depth):
if depth == m:
print(*result)
return
for ans in answer:
if len(result) != 0 and result[-1] > ans: #1
continue
result.append(ans)
dfs(depth+1)
result.pop()
dfs(0)
#1 : 문제의 패턴을 보면 자기보다 작은 수는 오른쪽에 올 수 없다. 그래서 result의 길이가 0이 아닐때 가장 오른쪽 원소보다 새로들어올 숫자가 작으면 continue 해준다.
다른풀이)
import sys
n, m = map(int, sys.stdin.readline().split())
number = list(map(int, sys.stdin.readline().split()))
number.sort()
res = []
def backTracking(depth):
if depth == m:
print(*res)
return
for i in number:
if not res or res[-1] <= i:
res.append(i)
backTracking(depth+1)
res.pop()
backTracking(0)
728x90
'[Coding Test] > [백준]' 카테고리의 다른 글
[백준] 15664 파이썬(python) : N과 M (10) - (★) (0) | 2022.07.07 |
---|---|
[백준] 15663 파이썬(python) : N과 M (9) - (★) (0) | 2022.07.07 |
[백준] 15656 파이썬(python) : N과 M (7) (0) | 2022.07.07 |
[백준] 15655 파이썬(python) : N과 M (6) (0) | 2022.07.07 |
[백준] 15654 파이썬(python) : N과 M (5) (0) | 2022.07.06 |