Leta Learns

[Python] 백준 15651번 - N과 M (3) 본문

Coding/백준

[Python] 백준 15651번 - N과 M (3)

leta 2022. 2. 25. 20:13

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

 

15651번: N과 M (3)

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

www.acmicpc.net

 

n과 m (3)은 같은 수를 여러 번 골라도 된다는 것이 (1), (2)와 달랐다.

 

(1), (2) 에서는 for문 안에

if i not in ans:

라는 구문을 넣어서 수 하나는 한 번만 들어가게 조건을 걸어주었다.

 

(3)에서는 이 조건문을 빼주었다.

코드를 복붙한 후 지운 게 아니라 처음부터 푼 거라서 (1), (2) 코드랑 디테일은 다르다.

 

import sys
input = sys.stdin.readline

def dfs():
    if len(ans) == m:
        print(*ans)
        return

    for i in range(1, n+1):
        ans.append(i)
        dfs()
        ans.pop()

n, m = map(int, input().split())
ans = []
dfs()

 

Comments