![[DFS] 백준 24480번 : 알고리즘 수업 - 깊이 우선 탐색2 - Java](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FF7XWB%2FbtsN42iOzdn%2F2DM05KARsNsRJMHqZijxwk%2Fimg.png)
https://kimjunhyun.tistory.com/137 와 똑같은 문제다만 한가지의 문제조건(오름차순 -> 내림차순)만 다르다 ✅ 문제https://www.acmicpc.net/problem/24480 🔑 풀이import java.io.*;import java.util.*;public class Main { static ArrayList[] graph; static boolean[] visited; static int N, M, R; static int[] answer; static int order; public static void dfs(int idx) { visited[idx] = true; answer[idx] = order; ..
![[DFS] 백준 24479번 : 알고리즘 수업 - 깊이 우선 탐색1 - Java](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbuCRIq%2FbtsN46LF6ye%2Fq6PGhu1V0TG0IusJfSvE21%2Fimg.png)
✅ 문제https://www.acmicpc.net/problem/24479접근 방법1. "DFS, 정점, 간선, 무방향 그래프 " -> DFS / BFS 2. 서로 연결되었다는 정보를 어떻게 하나의 자료구조로 통합할까? (2차원 배열 vs ArrayList) N값이 너무 클 때는 ArrayList 사용. 고민하기 싫으면 ArrayList로 통일하기! 3. 이미 방문한 지점을 다시 방문하지 않으려면 어떤 자료구조를 사용해야할까? 재방문을 방지하는 것은 visited[] 1차원 배열 사용 4. 어떻게 오름차순으로 방문할 수 있을까? 애초에 ArrayList를 처음에 정렬했기 때문에 DFS 함수 내에서 다음거를 찾아갈 때 오름차순이 보장됨. 5. 방문 순서를 담기 위해서는 어떤 자료구조를..
![[DFS] 백준 11724번 : 연결 요소의 개수 - Java](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FLccO4%2FbtsN6oqZKVY%2FelwJnlTIqxjoEJbemFY9P1%2Fimg.png)
https://www.acmicpc.net/problem/2606이번 문제는 위의 문제와 거의 같다. (풀이 참고 : https://kimjunhyun.tistory.com/134) ✅ 문제https://www.acmicpc.net/problem/11724 접근방법1. 연결된 요소의 개수 -> DFS / BFS2. 서로 연결되었다는 정보를 어떻게 하나의 자료구조로 통합할까?3. 이미 방문한 지점을 다시 방문하지 않으려면 어떤 자료구조를 사용해야할까?4. 어디에서 DFS를 시작할 것인가? 🔑 풀이import java.io.*;import java.util.*;// DFSpublic class Main { final static int MAX = 1000 + 10; // N이 가질 수 있는 최댓값 ..
![[DFS] 백준 2606번 : 바이러스 - Java](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fcse3Zs%2FbtsN4JIlnUG%2FJVNSsM4AOcuAKFdhRpz9y1%2Fimg.png)
https://www.acmicpc.net/problem/2606✅ 문제 재귀함수 Depth🔑 풀이import java.io.*;import java.util.*;public class Main { static boolean[][] graph; static boolean[] visited; // 재방문 방지 배열 static int N, M; static int answer; public static void dfs(int idx) { visited[idx] = true; answer++; // dfs 호출되는 횟수만큼 몇개의 컴퓨터가 연결되어있는지 의미 for (int i = 1; i 참고https://www.youtube.com..