09-06. DFS(깊이 우선 탐색)

0. 문제 유형

  • 모든 경로 탐색

1. 네트워크

  • 프로그래머스 Lv.3 / 체감 난이도 Lv.2

  • 끝까지 가는 모든 경로를 탐색하는 문제

import java.util.*;

class Solution {
    public int solution(int n, int[][] computers) {
        int answer = 0;
        boolean[] check = new boolean[n];
        for (int i = 0; i < n; i++) {
            if(!check[i]) {
                dfs(computers, i, check);
                answer++;
            }
        }
        
        return answer;
    }
    
    public void dfs(int[][] computers, int i, boolean[] check) {
        check[i] = true;
        
        for(int j = 0; j < computers.length; j++) {
            if (i != j && computers[i][j] == 1 && !check[j]) {
                dfs(computers, j, check);
            }
        }
    }
}

2. 단어 변환

  • 프로그래머스 Lv.3 / 체감 난이도 Lv.3

  • 하나씩 끝까지 만들어보면서 단어를 찾음 + 이미 사용한 단어 체크하는 배열

3. 여행 경로

  • 프로그래머스 Lv.3 / 체감 난이도 Lv.3

  • 끝까지 가는 모든 경로를 탐색하는 문제 + 정렬

4. 불량사용자

  • 프로그래머스 Lv.3 / 체감 난이도 Lv.3

  • DFS + 백 트래킹

5. 다단계 칫솔 판매

  • 프로그래머스 Lv.3 / 체감 난이도 Lv.3

  • 트리구조지만 Map과 DFS로 풀 수 있는 문제

Last updated