(파이썬) 백준15650번 N과 M(2)

  • by


출처: https://www.acmicpc.net/problem/15650

소스 코드

n, m = list(map(int, input().split()))

s = ()

def dfs(start):
    if len(s) == m:
        print(' '.join(map(str, s)))
        return

    for i in range(start, n + 1):
        if i not in s:
            s.append(i)
            dfs(i+1)
            s.pop()

dfs(1)

해설

백트래킹 알고리즘을 이용해 해결할 수 있으며, 15649번 문제와 같은 문제다.

수열이 오름차순이어야 하기 때문에 start 변수를 두고 재귀를 할 때 i+1 에서 i 의 다음의 수로부터 들어가도록 한다.

2023.03.14 – (알고리즘/백준) – (Python) 백준 15649번 N과 M(1)

(파이썬) 백준15649번 N과 M(1)

출처:https://www.acmicpc.net/problem/15649 15649번:N과 M (1) 1행에 1개씩 문제의 조건을 만족하는 수열을 출력한다.

중복되는 수열을 여러 번 출력하지 마십시오. 각 수열은 공백으로 구분하여 출력해야 합니다.

tlsdbfk.