묻고 답해요
160만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결파이썬 알고리즘 문제풀이 입문(코딩테스트 대비)
다른 방법의 DFS
다음과 같이 DFS 함수를 작성하는 것도 괜찮은 방법일까요? def DFS(L): global cnt if L == n_size: for x in result_list: print(x, end='') print() cnt += 1 return else: for i in range(L, n_size): if n[L] != '0' and 65 <= int(n[L: i+1]) + 64 <= 90: result_list.append(chr(int(n[L: i+1])+ 64)) DFS(i+1) result_list.pop()
-
미해결파이썬 알고리즘 문제풀이 입문(코딩테스트 대비)
dfs 공부관련 질문입니다.
강사님 파이썬을 처음 다루진 않지만 알고리즘 및 자료구조를 처음 공부하는 학생입니다. dfs 개념은 잡히는데 머릿속에서 문제를 읽고 dfs 개념의 핵심인 스택구조가 바로바로 떠올려지면서 코드를 구현하는게 너무 어렵습니다. 부분집합 구하기 문제또한 코드는 간단하나 이 코드가 진행되는 과정이 머릿속으로 바로 떠올려지지 않아 책에 적어보면서 공부를 하게 되네요. 어떻게 하면 머리속에 dfs개념을 바로 잡을 수 있을까요??
-
미해결자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
DFS문제의 시간복잡도가 궁금합니다.
안녕하세요 선생님. 항상 질 좋은 강의 감사드립니다. 다름이 아니라 DFS문제를 이용한 문제들, 가령 바둑이 승차와 같은 문제는 시간복잡도가 어떻게 되는지 궁금합니다. 반복문으로 배열 전체를 탐색하는것이 아니므로 `O(N)` 이하가 나올것 같은데 맞는지 궁금합니다!
-
미해결자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
안녕하세요! 12번 경로탐색(DFS) 관해 질문 드립니다.
강의 너무나 잘 듣고 있습니다. 해당 강의에서, 정점을 가지고 for문을 돌 때 방문 체크를 해주었는데, 저처럼 DFS 함수 진입시 정점 방문을 해주는 코드는 맞지 않는 코드인가요?? 정답은 나옵니다 6! import java.util.Scanner; public class 경로탐색_인접행렬 { static int answer = 0, n,m; static int[][] graph; static boolean[] check; static void DFS(int v){ check[v] = true; if (v == n) answer++; for (int i = 1; i < graph[v].length; i++){ if(graph[v][i] == 1 && !check[i]){ DFS(i); check[i] = false; } } } public static void main(String[] args) { Scanner sc = new Scanner(System.in); n = sc.nextInt(); m = sc.nextInt(); check = new boolean[n + 1]; graph = new int[n + 1][n + 1]; for (int i = 0; i < m; i++){ int x = sc.nextInt(); int y = sc.nextInt(); graph[x][y] = 1; } DFS(1); System.out.println(answer); } }