카테고리 없음

[BaekJoon 15651번] N과 M(3) (Python)

하루살이 2022. 3. 1. 20:38

N과 M(3) 문제입니다.

 

문제링크: 

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

 

15651번: N과 M (3)

한 줄에 하나씩 문제의 조건을 만족하는 수열을 출력한다. 중복되는 수열을 여러 번 출력하면 안되며, 각 수열은 공백으로 구분해서 출력해야 한다. 수열은 사전 순으로 증가하는 순서로 출력해

www.acmicpc.net

풀이

조건: 중복 가능, 사전순 출력

N과 M(2)에서 오름차순은 기존 배열에서의 최댓값과 새로 입력할 숫자의 크기 비교만 제거하면 된다.

 

Code

# 중복 허용, 사전 순 출력
n, m = map(int, input().split())
result = [0] * (m+1)

def solve(depth):
    if depth == m+1:  # 탈출 조건
        for i in range(1, m+1):
            print(result[i], end=' ')
        print()
    else:
        for i in range(1,n+1):
                result[depth] = i  # 방문한 번호 입력
                solve(depth+1)  # 깊이 우선 탐색
                result[depth] = 0  # 방문 내용 제거
solve(1)