Algorithm/BOJ

[백준] 15654번 - Silver3 N과 M(5), 파이썬 코드

ramin0119 2024. 9. 7. 23:39
728x90

solved.ac의 Class 4 문제 중 N과 M(5) 문제이다.

 

주어진 숫자들을 정렬한 리스트를 재귀 백트래킹하는 문제라는 것을 알 수 있다.

" 수열은 사전 순으로 증가하는 순서로 출력해야 한다. "이라는 문제의 특징이 있으니 조심하자.

 

해결했던 코드는 다음과 같다.

import sys
global n, m

numbers = []
lst = []

def backtracking(d):
    # d가 m과 같아지면 return
    if d == m:
        print(" ".join(map(str, lst)))
        return
    for i in range(n):
        if numbers[i] in lst: continue;
        lst.append(numbers[i])
        backtracking(d+1)
        lst.pop()

if __name__ == "__main__":
    n, m = map(int, sys.stdin.readline().split())
    numbers = sorted(list(map(int, sys.stdin.readline().split())))
    backtracking(0)
728x90