728x90
반응형
import sys
input = sys.stdin.readline
N, M = map(int, input().split())
numbers = list(map(int, input().split()))
numbers.sort()
box = []
def compare(a, b):
if a > b:
return False
return True
def backTracking(depth):
if depth == M:
print(' '.join(map(str, box)))
return
for i in range(N):
if depth == 0 or compare(box[depth-1], numbers[i]):
box.append(numbers[i])
backTracking(depth + 1)
box.pop()
backTracking(0)
중복 숫자가 가능하며, 뒷 숫자가 앞 숫자보다 같거나 커야 한다.
숫자를 비교하는 함수 compare를 만든 후,
backTracking 함수에서 depth가 0 이거나 compare 함수 조건을 만족하면 수열에 수를 추가한다.
수열이 완성되면(최대 depth에 도달하면) 수열에 공백을 추가해서 즉시 출력한다.
728x90
반응형
'Algorithm > BackTracking' 카테고리의 다른 글
[Baekjoon 15664 / Python / 실버2] N과 M (10) (0) | 2024.08.09 |
---|---|
[Baekjoon 15663 / Python / 실버2] N과 M (9) (0) | 2024.08.07 |
[Baekjoon 15656 / Python / 실버3] N과 M (7) (0) | 2024.08.07 |
[Baekjoon 15655 / Python / 실버3] N과 M (6) (0) | 2024.08.07 |
[Baekjoon 15654 / Python / 실버3] N과 M (5) (0) | 2024.08.07 |