본문 바로가기

백준문제풀이

[백준 문제풀이] 15649번 : N과 M(1)

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

 

15649번: N과 M (1)

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

www.acmicpc.net

💡 예전에 c로 풀었던 문제인데, 파이썬으로 풀려고 바꾸니까 제대로 안돌아가서 처음부터 다시풀었던 문제

이전에 c로 풀었을때는 깊이우선탐색으로 안풀었는데 깊이우선탐색이 확실히 코드가 더 간단한 것 같다.

 

1. 소스코드

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

def dfs():
    if len(c)==M:
        print(' '.join(map(str, c)))
        return
    else:
        for i in range(1,N+1):
            if i not in c:
                c.append(i)
                dfs()
                c.pop()

dfs()