[백트래킹] N과M(4)

2021. 7. 18. 14:14백준

 

15652번: N과 M (4)

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

www.acmicpc.net

n과m 시리즈를 전부 포스팅 할 필요는 없을 것 같아서 바로 4로 넘어왔다.

 

파이썬 문법이 간결해서 좋은데, 솔직히 삼항 연산자는 가독성도 그렇고 뭔가 마음에 안 든다...

 

자바나 자바스크립트처럼 cond ? a : b 하면 얼마나 좋아... 어차피 syntax sugar인데 짧게 하지....

 

문제 자체는 별거 없었다.

 

재귀함수는 명료한 exit조건이 관건인데 항상 똑 부러지게 바로 결정을 못 하고 긴가민가 하다...

 

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


def get_line(pre, now, depth):
    if depth == M:
        print(pre + str(now))
    else:
        for i in range(now and now or 1, N + 1):
            get_line(pre + str(now and str(now) + " " or ""), i, depth + 1)


get_line("", "", 0)