📑 1. 문제설명깊이 우선 탐색으로 모든 그래프의 노드를 순회하는 함수 solution() 작성하기시작 노드는 start로 주어진다. graph는 [출발 노드, 도착 노드] 쌍들이 들어 있는 리스트이다.반환값은 그래프의 시작 노드부터 모든 노드를 깊이 우선 탐색으로 진행한 순서대로 노드가 저장된 리스트 제약조건노드의 최대 개수는 100개를 넘지 않습니다.시작 노드부터 시작해서 모든 노드를 방문할 수 있는 경로가 항상 있다.그래프의 노드는 문자열이다.입출력 예graphstartnreturn[['1', '2'], ['2', '3'], ['3', '4'], ['4', '5']]'1'5['1', '2', '3', '4', '5'][['1', '2'], ['1', '3'], ['2', '4'], ['2', '5..
My Tech Blog (깊이우선탐색)
오늘의 명언
⚠️ 문제jdoodle에서 아래코드 실행 중 에러 발생static ArrayList[] graph; // 인접 리스트graph = new ArrayList[N + 1];Note : Main.java unchecked or unsafe operationsNote: Recompile with -Xlint: unchecked for details. 🧐 원인자바 제네릭이랑 배열을 함께 사용할 때 자주 나오는 경고라고 한다. 자바에서는 제네릭 배열 생성은 직접 불가하다. → 즉, `new ArrayList[N+1]`은 불가능 하기 때문에대신 제네릭을 빼고 그냥 Raw 타입 배열을 만들고 각 인덱스를 ArrayList로 초기화한다.이렇게 하면 컴파일러가 타입 안전성이 완전히 보장되지 않는다고 컴파일 에러를 띄..
📑 1. 문제설명💡 2. 접근방식 dfs(깊이 우선 탐색)으로 A,E,I,O,U로 조합해서 만들 수 있는 모든 단어를 리스트에 넣어 준다.그리고 list의 사이즈만큼 반복문을 돌리면서 word랑 일치하는 단어가 들어 있는 칸의 인덱스를 반환한다. ⭐ 3. 정답코드import java.util.*;class Solution { static List list; static String [] words = {"A", "E", "I", "O", "U"}; public int solution(String word) { int answer = 0; list = new ArrayList(); dfs("", 0); ..
📑 1. 문제설명 💡 2. 나의 코드 문제에서 구해야 하는 것 - 최대 몇 번 던전을 돌 수 있는지 횟수 즉, 존재하는 던전들을로 도는 순서 바꿔가면서 가능한 모든 조합을 만든다.만약 A,B,C 던전이 있다면? `A-B-C`,`A-C-B`,`B-A-C`,`B-C-A`, `C-A-B`, `C-B-A` 조합을 모두 순회하면서최대로 몇 번 돌 수 있는지 카운팅 해 준다. 백트래킹과 DFS(깊이 우선 탐색)백트래킹과 dfs로 모든 경우의 수를 조합 해 준다.depth 는 탐색횟수이다.구하는 순간 answer = Math.max(answer, depth) 해서 최댓값 업데이트class Solution { // 전역 변수 선언 public static int answer; // 최대 던전 탐험 횟수 ..