0908_Algorithm_15649: N과 M(1)

lactea·2021년 9월 8일

Algorithm

목록 보기
1/17

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

초기 구상과정

솔직히 말해서 내가 푼 게 아니다. 고민해봤지만 결국 구선생님의 도움을 받아서 이것저것 찾아봤다. 도저히 DFS와 backtracking이 이해가 되지 않아서 코드로만 이해하고 넘어가는 느낌이 든다.

코드

import sys

N, M = map(int, sys.stdin.readline().split())

def DFS():
    if len(s) == M:
        print(*s)
        return
    for i in range(1, N + 1):
        if visited[i]:
            continue

        visited[i] = 1
        s.append(i)
        DFS()
        s.pop()
        visited[i] = 0

s = []
visited = [0] * (N + 1)
DFS()

느낀점

문제를 읽고 순열이라는 것도 알았고 알고리즘 상에서 어떻게 들어가고 모형을 만들 수는 있는데 코드로 작성하려고 하니 머리가 돌아가질 않아서 당황스럽다. 어떻게 손대야할지 막막하다.. 공부를 더 해야하나 코딩을 막무가내로 해야하나...

profile
interested in IT/tech

0개의 댓글