본문 바로가기
백준 알고리즘(BOJ)

백준 알고리즘 15652 (N과 M(4)) - python

by Think_why 2019. 10. 15.

[문제] 백준 알고리즘 15652 (N과 M(4)) - python

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

 

15652번: N과 M (4)

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

www.acmicpc.net

 

전형적인 N과 M 문제인데,

1. 같은 수를 여러 번 골라도 되고,

2. 비내림차순(순열의 오른쪽 요소가 크거나 같음)

 

1.을 해결하기 위해 재귀 시 i+1이 아닌 i를 넘겨주어 같은 수도 고를 수 있게 

2.를 해결하기 위해 idx 적용(N과 M(2))에서 썼던 방법 사용

 

[Code]

N, M = map(int, input().split())
out = []

def solve(depth, idx, N, M):
    if depth == M:
        print(' '.join(map(str, out)))
        return
    for i in range(idx, N):
        out.append(i+1)
        solve(depth+1, i, N, M)
        out.pop()

solve(0, 0, N, M)

 

728x90

댓글