백준15650: N과 M(2) - 조합 (Python/파이썬)

Hyn·2025년 1월 22일

Algorithm(Py)

목록 보기
9/37
import sys
input = sys.stdin.readline

N, M = map(int, input().split())

path = []
def orders(n, m, start):
    if len(path) == m:
        print(*path)
        return
    for i in range(start, n+1):
        if i not in path:
            path.append(i)
            orders(n, m, i)
            path.pop()

orders(N, M, 1)

M, N 최대 8인 문제라 이렇게 푸는 게 하단 코드처럼 path와 used 따로 관리하는 것보다 더 빠를 줄 알았는데 아니더라. 아주 근소한 차이로 하단 코드가 더 빨랐다.

import sys
input = sys.stdin.readline

N, M = map(int, input().split())

used = [0] * (N+1)
path = []
def orders(n, m, start):
    if len(path) == m:
        print(*path)
        return
    for i in range(start, n+1):
        if not used[i]:
            used[i] = 1
            path.append(i)
            orders(n, m, i)
            path.pop()
            used[i] = 0



orders(N, M, 1)
profile
쪼렙 개발자 하지만 포기하지 않지

0개의 댓글