목록강의 (57)
개발자는 기록이 답이다

12. 경로탐색(DFS) 예시 입력 1 5 9 1 2 1 3 1 4 2 1 2 3 2 5 3 4 4 2 4 5 예시 출력 1 6 인접행렬 기본 코드 인접 행렬(Adjacency Matrix)은 그래프의 연결 정보를 행렬로 표현하는 방법입니다. 정점 간의 연결 여부를 2차원 배열로 나타내며, 두 정점이 연결되어 있으면 1로 표시하고 연결되어 있지 않으면 0으로 표시합니다. import java.util.Scanner; public class 인접행렬 { // n: 정점의 개수 // m: 간선(Edge)의 개수 static int n, m, answer=0; static int[][] graph; public void DFS(int v) { } public static void main(String[] ar..

11. 그래프와 인접행렬 그래프에 배워보고, 그 다음에 그래프를 코드안에서는 어떻게 구현하는지 알아보겠습니다. G(V,E)로 이뤄진 집합입니다. Graph는 vertex(정점,노드)와 edge(간선)으로 이루어진 집합 G(V,E) 1. 무방향 그래프 양방향 그래프라고 보면 됩니다. 양쪽 다 갈 수 있으면 무방향으로 하고 연결되어있다고 가정합니다. 도시라는 주제가 주어지면, 노드가 도시가 되고 간선이 도로라고 보면 됩니다. 1번에서 2번 갈 수 있고, 2번에서 1번 갈 수 있다는 것입니다. 5 5 // 정점개수, 간선 개수 1 2 1 2 2 4 3 4 2 5 프로그래머스에서 입력이 들어오면 이것을 그래프로 어떻게 구현할까요? 2차원 배열로 그래프라는 걸로 잡습니다. graph 1 2 3 4 5 1 0 1 ..

9. 10. Tree 말단노드까지의 까장 짧은 경로(DFS/BFS) 루트노드에서 말단 노드까지 가는데 이동하는 횟수를 즉 간선(에지)의 개수를 구하라 이런 최단 거리 문제는 BFS로 풀어야 맞습니다. 하지만 배우기 위해 DFS로는 어떻게 풀어야하는지 알아보겠습니다. DFS는 제약이 있습니다. 3번 노드에서 자식노드가 6번 노드로 하나만 있을 경우 풀기 어렵습니다. 정확하게 2개 자식노드가 있거나 아예 없어야 합니다. BFS에서는 레벨 탐색이라 상관없습니다. DFS : Depth-First Search 0,1,2레벨이 있는데 한번만에 가는 1레벨은 말단 노드라면 3원소입니다. 레벨이 바로 문제에서 정의하는 이동 횟수(거처가는 간선의 횟수)를 말합니다. 말단 노드를 만났을때, 매개변수에 있는 root가 가르..
8. 송아지 찾기1(BFS) 예시 입력 1 5 14 예시 출력 1 3 이전에 찾았던건 무시해줍니다. 최초로 발견되는게 최단거리 입니다. 14까지 3번만에 갈 수 있다는 것입니다 5 -> 4 -> 9 -> 14 이런걸 상태 트리라고 합니다. 3레벨 탐색하니까 14번을 발견하고 루트에서 몇번만에 갔는지를 출력하면 됩니다. import java.util.LinkedList; import java.util.Queue; import java.util.Scanner; // 최단 거리 구하기 public class Main { int answer = 0; // 최소 횟수 카운팅 int[] dis = {1, -1, 5}; // 앞으로 전진, 뒤로 후진, 5칸 앞으로 전진 int[] ch; // 체크 배열 : 한 번 방..