본문 바로가기

algorithm/백준알고리즘

[백준알고리즘] 15652번: N과 M (4) -Python

728x90

[백준알고리즘] 15652번: N과 M (4) -Python

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

 

15652번: N과 M (4)

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

www.acmicpc.net

비 내림차순이라는 거 말고는 별로 달라진 게 없다.

앞에서 썼던 itertools는 사용하지 않았다. itertools의 combinations_with_replacement를 사용하면 똑같이 출력할 수 있다.

근데 여기서는 사용하지 않아도.. 뭐... 넘어가도록 하자!

 

import sys

def testCase():
    input_val = list(map(int, sys.stdin.readline().split()))
    global N, M
    N, M = input_val

def solve(remain, result=[]):
    if len(result) == M:
        for r in result:
            print(r, end=" ")
        print()
        return
    
    for idx in range(len(remain)):
        result.append(remain[idx])
        solve(remain[idx:], result)
        result.pop(-1)

if __name__ == "__main__":
    testCase()
    solve(list(range(1, N+1)))

 

잘못된 점이나 부족한 점 지적해주시면 감사하겠습니다

728x90