백준 15650번: N과 M (2) python

tomkitcount·2025년 5월 1일

매일 알고리즘

목록 보기
43/302

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


문제 접근

자연수 N과 M이 주어졌을 때, 1부터 N까지의 수 중에서 중복 없이 M개를 고른 수열을 오름차순으로 모두 출력해라. 라는 문제이다.

해답과 풀이

import sys
input = sys.stdin.readline  
N, M = map(int, input().split())  # N: 숫자 범위, M: 선택할 숫자 개수

def dfs(start, path):
    # 길이가 M이 되면 출력
    if len(path) == M:
        print(' '.join(map(str, path)))
        return

    # start부터 N까지 반복
    for i in range(start, N + 1):
        # 현재 숫자 i를 path에 추가하고
        # 다음 재귀는 i보다 큰 수부터 진행 => 오름차순 보장
        dfs(i + 1, path + [i])

# DFS 시작 (1부터 시작, 아직 고른 숫자 없음)
dfs(1, [])
profile
To make it count

0개의 댓글