코딩테스트

[백준] 15650 | N과 M (2) [파이썬/python]

사용할수없는닉네임이왜이렇게많지ㅠㅠ 2025. 3. 23. 21:04
728x90

문제

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

입력받은 값에 따라 조합을 구하는 문제이다.

 

접근

이전에 N과 M (1)을 풀 때 itertools를 사용했기 때문에 이번에는 itertools 대신 백트래킹 알고리즘을 활용해 코드를 작성했다. 재귀함수를 이용했다.

 

코드

import sys
input = sys.stdin.readline

def combination(start):
    if len(tmp) == M:
        print(" ".join(map(str, tmp)))
        return
    
    for i in range(start, N + 1):
        tmp.append(i)
        combination(i + 1)
        tmp.pop()

N, M = map(int, input().split())
tmp = []            
combination(1)

개인적으로 코드를 이해하기 위해 N=3, M=2일 때 코드의 작동 과정을 정리해보았다.

728x90