개미의 개열시미 프로그래밍

[알고리즘] 백준15649 N과 M (1) - 파이썬 본문

알고리즘/DFS, BFS, 백트래킹

[알고리즘] 백준15649 N과 M (1) - 파이썬

YunHyeok 2021. 12. 13. 22:45
728x90
반응형

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

 

15649번: N과 M (1)

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

www.acmicpc.net

 

 

[풀이 코드]

from sys import stdin
input = stdin.readline

def dfs(result, k):
    if k == M:
        print(*result, sep=' ')
        return

    for z in range(1, N+1):
        if str(z) in result: continue
        result.append(str(z))
        k += 1
        dfs(result, k)
        k -= 1
        result.pop()


N, M = map(int, input().split())
result = []
for i in range(1, N+1):
    result.append(str(i))
    dfs(result, 1)
    result.pop(-1)
  • 다른 사람들의 풀이를 보니 세상에서 제일 어렵게 푼 코드인 것 같다. (누군가 참고한다면 다른사람 블로그를 보길 꼭..)
  • 쓸데없이 for문이 많다는 점, K라는 변수를 둬서 재귀 조건을 생각했지만 필요 없었다. 너무 비효율적이지만 정답처리가 돼서 올려본다..
728x90
반응형
Comments