[알고리즘] 백준 - 15652: N과 M

📑 문제 설명

1부터 N까지 번호가 적힌 구슬이 있습니다. 이중 M개를 뽑는방법의 수를 출력하는 프로그램을 작성하세요.

⌨️ 입력

첫 번째 줄에 자연수 N(3<=N<=10)과 M(2<=M<=N) 이 주어집니다.

🖥 출력

첫 번째 줄에 결과를 출력합니다. 맨 마지막 총 경우의 수를 출력합니다. 출력순서는 사전순으로 오름차순으로 출력합니다.

예제 입력 1

4 2

예제 출력 1

1 2
1 3
1 4
2 3
2 4

🖥 프로그램 로직

✅ Answer

import sys
import os

sys.path.insert(0, "/".join(os.getcwd().split("/")[:-2]))
from judge import judge


def DFS(L, s):
    global cnt, result
    if L == m:
        re = []
        for j in range(L):
            re.append(res[j])
        cnt += 1
        result.append(re)
        re = []
    else:
        for i in range(s, n + 1):
            res[L] = i
            DFS(L + 1, i + 1)


@judge()
def solve():
    global m, res, cnt, n, result
    n, m = map(int, input().split())
    res = [0] * m
    cnt = 0
    result = []
    DFS(0, 1)
    return "".join((map(lambda x: " ".join(map(str, x)), result))) + str(cnt)

solve()

❗️ 해설 ❗️

좋은 웹페이지 즐겨찾기