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

백준 알고리즘 15641 (N과 M(3)) - python

by Think_why 2022. 5. 22.

백준 알고리즘 15641 (N과 M(3)) - python

> https://www.acmicpc.net/problem/15651

 

15651번: N과 M (3)

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

www.acmicpc.net

 

N과 M 문제인데 같은 수를 여러 번 골라도 된다!

 

[문제 풀이]

1. DFS 함수 생성

2. 탈출 조건 depth == M에서 tmp를 join시켜 출력

3. 중복 체크를 하지 안하도 되니 visited 체크 X

4. for문을 돌리며 자연수를 tmp에 append

5. depth 증가시켜서 재귀시키고 백트래킹

 

import sys

def DFS(depth):
    if depth == M:
        print(' '.join(map(str, tmp)))
        return
    else:
        for j in range(1, N+1):
            tmp.append(j)
            DFS(depth+1)
            tmp.pop()
    return
    
if __name__ == '__main__':
    N, M = map(int, sys.stdin.readline().split())
    tmp = []
    DFS(0)

 

728x90

댓글