[백준 15649 파이썬] N과 M (1)

일단 해볼게·2024년 3월 21일
0

백준

목록 보기
129/132

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

import sys
input = sys.stdin.readline

def dfs(n, lst):
    if n == M: # M개를 뽑았다면
        answer.append(lst)
        return
    
    for i in range(1, N + 1):
        if v[i] == 0: # 선택하지 않은 숫자
            v[i] = 1 # 방문 처리
            dfs(n + 1, lst + [i]) # lst에 방문한 i를 추가
            v[i] = 0 # 방문 처리 해제


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

answer = [] 
v = [0] * (N + 1) # 중복 확인을 위한 배열

dfs(0, [])

for lst in answer:
    print(*lst)

백트래킹을 이용해 방문하지 않은 숫자로 조합해서 숫자를 만든다.

profile
시도하고 More Do하는 백엔드 개발자입니다.

0개의 댓글