Algorithm/BackTracking

[Baekjoon 15657 / Python / 실버3] N과 M (8)

양선규 2024. 8. 7. 20:13
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
반응형