백준 15651번 | 실버 3 | N과 M (3) | Python

kimminjunnn·2025년 11월 3일

알고리즘

목록 보기
223/311

문제 출처 : https://www.acmicpc.net/problem/15651


문제 파악

N과 M (1) , N과 M (2) 에 이어 N과 M 3 이다.

그러나 이 문제가 (1) 이 되어도 될 정도로 가장 기본적인 문제이다.
중복, 순서 다 상관없이 그저 N중 M개를 골라 사전순을 나열하면 된다.

앞선 문제들에서 나온 백트래킹 기법인 visited 배열이나 별다른 테크닉 없이 기본적인 백트래킹 함수를 구현하면 풀 수 있다.

해답 및 풀이

import sys
input = sys.stdin.readline

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

nums = [i+1 for i in range(N)] # [1,2,3..N]

path = []

def backtracking():
        # 종료 조건
    if len(path) == M : 
        print(*path)
        return;
    
    # 종료 조건이 아니라면 N번 반복하는데
    for i in range(N):
        path.append(nums[i])
        
        backtracking()
        path.pop()
    
backtracking()
profile
Frontend Engineers

0개의 댓글